我的总体程序是一个shell脚本。这个shell脚本调用我需要管道输入的C程序,最终C程序将创建一个shell。
但是,当我将输入传递到shell脚本中的C程序时
Do_Other_Stuff
./my_prog < file1
我无法让贝壳保持活力。正好跑,
Do_Other_Stuff
./my_prog
工作,因为我必须自己输入stdin,并且当my_prog退出时shell会正确生成。我非常确定在C程序中包含./my_prog调用,并且编译和运行它会起作用,但我很好奇是否有更清洁的shell方法。
我尝试了在不同情况下使用cat file1 | ./my_prog
和使用&
的几种组合,并且没有取得任何成功。
谢谢!
答案 0 :(得分:5)
尝试:
cat file1 - | ./myprog
许多程序将“filename”-
识别为stdin。
答案 1 :(得分:1)
您是否可以访问C程序源代码?我的猜测是C程序正在使用istty(0)
来确定stdin是否来自终端。在这种情况下,它可能只创建一个交互式shell。无论是从文件还是管道,使用stdin重定向都意味着istty(0)
返回false。