我有调用shell脚本(command.sh)的C程序(program.c)。
command.sh返回输出(密码),我需要在program.c中获取此输出。
使用system(command);
,我无法掌握输出。
C有什么其他方法可以解决我的问题吗?
答案 0 :(得分:2)
不是纯粹的C.你想要POSIX。特别是popen
功能。
规范有一个很好的例子,你可以只复制1:1 http://pubs.opengroup.org/onlinepubs/009604499/functions/popen.html
答案 1 :(得分:2)
听起来你害怕使用图书馆。请尝试使用库,它们与Unix工具一样是Unix的一部分。
答案 2 :(得分:2)
在纯C中(嗯......忽略system()
调用的内容),您可以将shell脚本输出重定向到文件,然后读取该文件。
system("whatever > file");
handle = fopen("file", "r");
/* if ok use handle */
fclose(handle);
答案 3 :(得分:1)
您应该使用popen
打开管道,但这听起来很乏味。一个C程序调用shell脚本来输入密码。
答案 4 :(得分:1)
您可以按照上面的建议使用popen()
,但请注意,在这种情况下,您无法控制您创建的进程(例如,您将无法将其杀死),您也无法知道其退出状态
我建议使用经典的pipe / fork / exec组合。然后,您将知道子进程的pid,因此您将能够发送信号,同时使用pipe()
您可以重定向进程标准输出,以便您可以在父进程中轻松读取它。例如,您可以看到我对popen() alternative的接受答案。