[英]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.