在Unix中,如何将命令行输入传递给外部进程

在Unix中,如何将命令行输入传递给外部进程,unix,command-line,input,fork,Unix,Command Line,Input,Fork,我的程序运行(exec..)一个外部程序。 运行时,外部程序要求用户[是/否]继续下一步 如何将[yes]从我的程序传递给外部程序,而不是在命令行中键入[yes] 在命令行上提供“是”响应的经典方法是-y选项(通常带有平行-n选项以指示“否”-请参见fsck(1)) 也有理由认为,运行该程序应该是一种“是的,我的意思是这样”的操作。但是,有时指定“是,我真的想这么做”(例如一次性初始化DBMS实例)是有意义的。除非外部程序支持相应的标志(请参见@Jonathan Leffler的答案),否则您可

我的程序运行(exec..)一个外部程序。 运行时,外部程序要求用户[是/否]继续下一步


如何将[yes]从我的程序传递给外部程序,而不是在命令行中键入[yes]

在命令行上提供“是”响应的经典方法是
-y
选项(通常带有平行
-n
选项以指示“否”-请参见
fsck(1)


也有理由认为,运行该程序应该是一种“是的,我的意思是这样”的操作。但是,有时指定“是,我真的想这么做”(例如一次性初始化DBMS实例)是有意义的。

除非外部程序支持相应的标志(请参见@Jonathan Leffler的答案),否则您可以控制该程序的源代码并添加它,您必须模拟“是”输入

选项:

  • 尝试通过管道将助手应用程序的输出发送到它的stdin:
    yes | external_程序
    来启动外部程序
    yes
    是一个简单的工具,如果您没有它,它只是不断地将“y”写入其标准输出

  • 手动将“是”写入外部程序的stdin

这两个选项都要求用户以一种或另一种方式使用管道。有关如何执行此操作的更多信息,请参阅