2 回答
TA贡献1934条经验 获得超2个赞
最简单的方法是在 exec.Cmd 的 ExtraFiles 字段中传递侦听器。
父母的例子:
var l *net.TCPListener
cmd := exec.Command(...)
f, err := l.File()
cmd.ExtraFiles = []*os.File{f}
孩子的例子:
l, err := net.FileListener(os.NewFile(3, "listener"))
您可能还想对此进行概括并让孩子接受 PROGRAMNAME_LISTENER_FD 作为环境变量。然后在启动子进程之前,父进程将环境变量设置为 3。
TA贡献1111条经验 获得超0个赞
我正在寻找相同的方法来监听环回地址并读取数据并发送到 WINDOWS 中的 exec 命令。
任何建议,因为 Windows 不支持 UNIX 中的文件描述符,我们按照以下步骤操作
服务:=“:1200”tcpAddr,错误:= net.ResolveTCPAddr(“tcp”,服务)
listener, err := net.ListenTCP("tcp",tcpAddr)
if err != nil {
return "", err
}
defer listener.Close()
file, err := listener.File() --> unix supports file descriptor / how about in windows ??
if err != nil {
return "", err
}
cmd := exec.Command( execname)
cmd.ExtraFiles = []*os.File{file} --> 在 unix 中它支持 / 在 windows 中如何添加数据???
cmd.Start()
- 2 回答
- 0 关注
- 178 浏览
添加回答
举报