Process 替换当前进程
在Ruby中,可以使用将当前正在执行的进程替换为已触发的进程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) } } 但它不可移植。如何
是否可以在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编程中知道它的,请参见:,“按照惯例,这些字符串中的第一个应该包含与正在执行的文件相关联的文件名…”。