从C ++调用shell脚本

时间:2014-06-24 12:44:03

标签: linux bash shell

通过命令 execl(“/ system / bin / sh”,“sh”,“test.sh”)从C ++代码调用shell脚本test.sh

在执行shell脚本之后,我需要将控件返回到C ++,但shell脚本只是退出而没有执行C ++代码中的下一条指令

3 个答案:

答案 0 :(得分:3)

您希望在fork之前使用exec创建子流程:

pid_t pid;
if((pid = fork()) > 0)
    execl("/system/bin/sh","sh","test.sh");
int status;
waitpid(pid, &status, 0); // wait for child process, test.sh, to finish

答案 1 :(得分:1)

使用exec系列函数,您的进程将成为新执行的进程,这意味着原始进程的所有内容都将丢失。

您需要使用的是system函数,该函数创建一个单独的进程并等待它完成并继续执行。

答案 2 :(得分:0)

使用

System("sh test.sh") 

它对我有用,就像我以前只使用system("test.sh")一样,它创建了一个问题,有时执行正确,有时不返回结果。