通过命令 execl(“/ system / bin / sh”,“sh”,“test.sh”)从C ++代码调用shell脚本test.sh
在执行shell脚本之后,我需要将控件返回到C ++,但shell脚本只是退出而没有执行C ++代码中的下一条指令
答案 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")
一样,它创建了一个问题,有时执行正确,有时不返回结果。