管道:1:错误的文件描述符

I saw via golang you can only do one Stdin so I'm trying to have two piped inputs into a cmd1.exec.Command(), one via Stdin and the other via ExtraFiles but the ExtraFiles pipe is giving pipe:1: Bad file descriptor when cmd1 tries to read it

cmd1 := exec.Command("command1", "-i", "pipe:0", "-i", "pipe:1", "more stuff")
cmd2 := exec.Command("command2", "-o", "-")
cmd3 := exec.Command("command3", "-o", "-")
stdin, stdinErr := cmd2.StdoutPipe()
if stdinErr != nil {
    return stdinErr
}
cmd2.Start()
cmd1.Stdin = stdin
pipeR, pipeW, _ := os.Pipe()
cmd1.ExtraFiles = []*os.File{pipeW}
extrastdin, extrastdinErr := cmd3.StdoutPipe()
if extrastdinErr != nil {
    return extrastdinErr
}
cmd3.Start()
fd3 := os.NewFile(3, "/proc/self/fd/3")
body, err := ioutil.ReadAll(extrastdin)
if err != nil {
    return err
}
fd3.Write(body)
defer pipeR.Close()
defer pipeW.Close()
defer fd3.Close()

展开翻译

译文

我通过golang看到只能做一个 Stdin </ code>,所以我想 两个通过管道输入到 cmd1.exec.Command()</ code>中,一个通过 Stdin </ code>,另一个通过 ExtraFiles </ code>,但通过 ExtraFiles </ 代码>管道给出<代码>管道:1:当<代码> cmd1 </代码>尝试读取它时,错误的文件描述符</代码> </ p>

 <代码> cmd1:= exec  .Command(“ command1”,“-i”,“ pipe:0”,“-i”,“ pipe:1”,“更多内容”)
cmd2:= exec.Command(“ command2”,“-o” ,“-”)
cmd3:= exec.Command(“ command3”,“ -o”,“-”)
stdin,stdinErr:= cmd2.StdoutPipe()
if stdinErr!= nil {
返回stdinErr
}
cmd2.Start()
cmd1.Stdin = stdin
pipeR,pipeW,_:= os.Pipe()
cmd1.ExtraFiles = [] * os.File {pipeW}
extrastdin,extrastdinErr:= cmd3.StdoutPipe( )
if extrastdinErr!= nil {
return extrastdinErr
}
cmd3.Start()
fd3:= os.NewFile(3,“ / proc / self / fd / 3”)
body,err:= ioutil。 ReadAll(extrastdin)
if err!= nil {
return err
}
fd3.Writ e(body)
defer pipeR.Close()
defer pipeW.Close()
defer fd3.Close()
</ code> </ pre>
</ div>

douzhang8033
douzhang8033 给定ExtraFile说3+i,我尝试了pipe:2,pipe:3,pipe:4无济于事
大约一年之前 回复
douxishai8552
douxishai8552 也许您想要pipe:3而不是尝试从stdout读取。
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

2
plsql developer登录时显示ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务
1
如何统计文本文件中16进制分隔符的个数
1
我声明了的,为什么还显示error C2065: “p”: 未声明的标识符?
4
c++程序运行时如何屏蔽掉程序调用的动态库或静态库的打印信息,只打印当前程序里的打印信息?
2
Python 中如何将多行数据的文件转成一列数据的文件?
2
python中描述符的理解
1
PCL1.8.1+vs2017运行报错065 L2_Simple”: 未声明的标识符
1
c语言问题:使用c语言制作学生信息管理系统
0
BAT请求帮忙写一个可以替换指定文件内两个指定字符串之间的数据。
2
VS中的MFC显示未定义标识符?
1
对trace/debug/info级别的日志输出必须使用条件输出形式或者使用占位符的方式
1
运算符~的作用是什么?
1
python文件调用os库后打包后闪退
2
springboot logback日志不能每天生成新的日志文件,全部日志在一个文件里?
1
winfrom 通过multipart/form-data方式 上传EXCEL文件,发生错误
1
datax从hive导出数据到mysql
1
报错Traceback (most recent call last): File... .format(val=len(data), ind=len(index))) ValueError: Length of passed values is 400, index implies 1
0
运用书上的朴素贝叶斯分类代码,但代码出错,怎么解决,大佬求解。。。
3
springboot 多模块打包war,tomcat启动提示找不到配置文件
1
请问重载流插入运算符<<怎么不能识别定义的类?