将输入管道输入到shell命令并保持创建的shell处于活动状态

时间:2012-09-18 02:21:55

标签: bash shell piping

我的总体程序是一个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和使用&的几种组合,并且没有取得任何成功。

谢谢!

2 个答案:

答案 0 :(得分:5)

尝试:

cat file1 - | ./myprog

许多程序将“filename”-识别为stdin。

答案 1 :(得分:1)

您是否可以访问C程序源代码?我的猜测是C程序正在使用istty(0)来确定stdin是否来自终端。在这种情况下,它可能只创建一个交互式shell。无论是从文件还是管道,使用stdin重定向都意味着istty(0)返回false。