繁体   English   中英

捕获程序C中的Shell脚本输出

[英]Catching shell script output in program c

我有C程序(program.c),它调用外壳程序脚本(command.sh)。 command.sh返回输出(密码),我需要在我的program.c中获取此输出。 使用system(command); ,我无法掌握输出。 C中还有其他方法可以解决我的问题吗?

不是纯C语言。您需要POSIX。 特别是popen函数。

该规范有一个很好的例子,您可以只复制1:1 http://pubs.opengroup.org/onlinepubs/009604499/functions/popen.html

听起来好像您害怕使用库。 请尝试使用库,它们与Shell工具一样在Unix中一样重要。

在纯C语言中(好吧...忽略system()调用的内容),您可以将Shell脚本输出重定向到一个文件,然后读取该文件。

system("whatever > file");
handle = fopen("file", "r");
/* if ok use handle */
fclose(handle);

您应该使用popen打开管道,但这听起来很乏味。 调用shell脚本输入密码的AC程序。

您可以按照上面的建议使用popen() ,但请注意,在这种情况下,您无法控制创建的进程(例如,您将无法杀死它),您也将不知道其退出状态。

我建议使用经典的pipe / fork / exec组合。 然后,您将知道子进程的pid,这样便可以发送信号,还可以使用pipe()重定向进程标准输出,以便可以在父进程中轻松读取它。 例如,您可以看到我接受的popen()替代答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM