Process 替换当前进程

Process 替换当前进程,process,go,Process,Go,在Ruby中,可以使用将当前正在执行的进程替换为已触发的进程 是否可以在Go中执行相同的操作?这相当于Kernel.exec: package main import "fmt" import "syscall" func main() { if err := syscall.Exec("/bin/ls", []string{"ls", "-l"}, []string{}); err != nil { fmt.Println(err) } } 但它不可移植。如何

在Ruby中,可以使用将当前正在执行的进程替换为已触发的进程


是否可以在Go中执行相同的操作?

这相当于Kernel.exec:

package main

import "fmt"
import "syscall"

func main() {
    if err := syscall.Exec("/bin/ls", []string{"ls", "-l"}, []string{}); err != nil {
      fmt.Println(err)
    }
}

但它不可移植。

如何处理多个参数?我正在尝试这样做:
syscall.Exec(“/usr/bin/ssh”,[]字符串{“-p”,“22”,”root@host“},[]字符串{})
但它似乎不起作用,因为我收到了错误:
ssh:connect to host 22 port 22:No route to host
这通过以下方式起作用:
syscall.Exec(“/usr/bin/ssh”,[]字符串{“-p 22”,”root@host“},[]字符串{})
@kolrie,很抱歉,您需要将命令名作为第一个参数传递。修好了。啊,我明白了。golang文档()确实缺乏,因此出于好奇,您是如何发现第一个参数是命令名的?我从C编程中知道它的,请参见:,“按照惯例,这些字符串中的第一个应该包含与正在执行的文件相关联的文件名…”。