在C语言中,可以使用系统函数system()
来执行shell命令,并获取其返回值。
system()
函数的原型如下:
int system(const char *command);
command
参数是一个字符串,用于指定要执行的shell命令。system()
函数会在新的子进程中执行该命令,并返回子进程的退出状态码。
要获取shell命令的返回值,可以使用system()
函数的返回值。如果返回值为-1,表示执行system()
函数时出错;如果返回值为其他非零值,表示命令执行成功并返回的是子进程的退出状态码;如果返回值为0,表示命令执行成功并且子进程正常退出。
下面是一个示例代码,演示了如何使用system()
函数获取shell命令的返回值:
#include <stdio.h>
#include <stdlib.h>
int main() {
int ret = system("ls -l"); // 执行shell命令"ls -l"
if (ret == -1) {
printf("调用system函数失败\n");
} else if (WIFEXITED(ret)) {
int exit_status = WEXITSTATUS(ret);
printf("命令正常退出,退出状态码为:%d\n", exit_status);
} else {
printf("命令异常退出\n");
}
return 0;
}
在上述示例中,使用system("ls -l")
执行了ls -l
命令,并将返回值赋给ret
变量。通过判断ret
的值,可以确定命令的执行状态。如果ret
为-1,表示执行失败;如果ret
为0,则说明命令正常退出;如果ret
为其他非零值,则说明命令执行异常。如果命令正常退出,可以使用WEXITSTATUS
宏获取命令的退出状态码。
需要注意的是,system()
函数只能获取到命令的退出状态码,无法直接获取命令的输出结果。如果需要获取命令的输出结果,可以将命令结果重定向到文件,再读取文件中的内容。