Bash 从C程序执行shell命令

Bash 从C程序执行shell命令,bash,unix,c,Bash,Unix,C,是否可以使用C程序写入正在运行的shell Bash的stdin?实际上,我想从我的C程序中使用bash执行命令,而不使用exec*系统调用。/p>/bin/echo通常是C程序 /bin/echo ls | sh 瞧!一个C程序刚刚写入正在运行的shell的标准输入,并执行了一个命令。这显然是可能的 曼波本现在是你的朋友了。任何更多的内容都超出了超级用户的范围,关于系统和报价需求等其他内容的讨论也是如此。还有一个程序/bin/echo;但是,大多数shell都有内置的命令回显。使用内置命令回

是否可以使用C程序写入正在运行的shell Bash的stdin?实际上,我想从我的C程序中使用bash执行命令,而不使用exec*系统调用。

/p>/bin/echo通常是C程序

/bin/echo ls | sh
瞧!一个C程序刚刚写入正在运行的shell的标准输入,并执行了一个命令。这显然是可能的


曼波本现在是你的朋友了。任何更多的内容都超出了超级用户的范围,关于系统和报价需求等其他内容的讨论也是如此。

还有一个程序/bin/echo;但是,大多数shell都有内置的命令回显。使用内置命令回显会不必要地混淆答案。然而,我们可以指向/bin/echo并说这是一个已编译的C程序,在该文件中,有..最终,您需要一个fork和一个exec*调用来运行bash程序;除非你算数,否则没有任何真正的选择,我也没有。然后是在bash上组织管道的问题,以处理来自程序的标准输入?和程序的标准输出?和标准错误,以及正确的外壳选项-i?。您希望在捕获的shell中执行什么类型的命令?我只想从程序中获取一个字符串输入,并将该字符串发送到任何正在运行的bash实例,bash将为我执行该命令,并将相应的输出发送到我的程序。请注意,您不能任意将命令发送到任何正在运行的实例Bash实例;他们中的大多数人忙于做其他人的工作,并且在错误的当前目录中,并且设置了错误的环境,等等。您将需要运行自己的shell;如果小心的话,不必为每个单独的命令运行新的shell,但是需要fork和exec*与之通信的bash。您需要两个或三个管道,用于shell的标准输入,shell的标准输出,可能还有单独的shell标准错误,您需要考虑如何读取它们。