如何在C程序中调用shell脚本程序,并等待其执行完毕
如题,请问如何在C程序中调用shell脚本程序,并等待shell脚本程序执行完毕,C程序才继续往下执行,谢谢!
------解决方案--------------------pid_t pid = fork();
if (pid == 0) { // child process
execv(...); // call the shell script
} else { // parent process
waitpid(pid, ...); // wait the child process to exit
}
------解决方案--------------------system
------解决方案--------------------system
popen,pclose
都可用
------解决方案--------------------如果立即返回那应该是你的脚本立即就返回了,
这要看你的脚本如何写的了
------解决方案-------------------- execlp()
可以
------解决方案--------------------popen吧, 好用.
------解决方案--------------------popen和pclose是不是也是用类似exec的方法使用?
============================================
没错,pclose是这么做的,使用waitpid等待直到子进程结束后返回,popen和pclose方法最简单了,而且还可以把子进程的输出结果打印出来,如:
iRet = popen( "ls a.txt ");
可以直接从iRet文件描述符中读就可以了,不过要先判断iRet != NULL
,
------解决方案--------------------system 应该可以的,如果是立即返回就是你自己的shell程序的问题。这个应该是顺序执行的。