3

我的首要程序是一个 shell 脚本。这个 shell 脚本调用了一个 C 程序,我需要将输入传递给它,最终 C 程序将创建一个 shell。

但是,当我将输入通过管道传输到 shell 脚本中的 C 程序时

Do_Other_Stuff
./my_prog < file1

我无法让贝壳保持活力。只是跑步,

Do_Other_Stuff
./my_prog

有效,因为我必须自己输入标准输入,并且当 my_prog 退出时,shell 会正确生成。我很确定将 ./my_prog 调用包含在 C 程序中,并编译和运行它会起作用,但我很好奇是否有更清洁的 shell 方式。

我尝试了几种在不同情况下使用cat file1 | ./my_prog和使用的组合&,但都没有成功。

谢谢!

4

2 回答 2

5

尝试:

cat file1 - | ./myprog

许多程序将“文件名”识别为-标准输入。

于 2012-09-18T02:44:37.447 回答
1

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

于 2012-09-18T07:00:40.627 回答