C代码执行shell脚本并获取返回值
时间: 2024-12-08 15:14:28 浏览: 27
在C语言中,执行shell脚本并且获取其返回值可以利用标准输入输出流(stdio.h)和系统调用(stdlib.h)中的`system()`函数。下面是一个简单的例子说明如何操作:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char *cmd = "sh -c 'your_script.sh && echo $?'"; // 你的shell脚本名
pid_t child_pid = fork(); // 创建子进程
if (child_pid == 0) { // 子进程
execlp(cmd, cmd, NULL); // 执行命令,并替换当前进程
perror("Error executing command");
exit(1);
} else { // 主进程
int status;
waitpid(child_pid, &status, 0); // 等待子进程结束
int return_value = WEXITSTATUS(status); // 获取shell脚本的退出状态码
printf("Shell script returned: %d\n", return_value);
}
return 0;
}
```
在这个示例中,我们首先创建一个子进程,然后使用`execlp()`执行shell命令。`&&`操作符确保如果前面的命令成功,则执行后面的命令。`echo $?`会打印上一条命令的退出状态码,这就是我们要获取的返回值。主进程中,我们使用`waitpid()`等待子进程结束,然后通过`WEXITSTATUS()`从`status`变量中提取返回值。
阅读全文