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