在C语言中,system()
函数用于执行外部命令
system()
函数返回一个整数,表示外部命令的执行状态。通常情况下,返回值为0表示命令成功执行,非0值表示命令执行失败。你可以通过检查返回值来判断命令是否执行成功。例如:#include <stdlib.h>
#include <unistd.h>
int main() {
int result = system("ls");
if (result == 0) {
printf("命令执行成功\n");
} else {
printf("命令执行失败,错误代码:%d\n", result);
}
return 0;
}
WEXITSTATUS
宏来获取system()
函数返回的退出状态。WEXITSTATUS
宏是一个整数类型,它可以从<sys/wait.h>
头文件中获取。例如:#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdio.h>
int main() {
int result = system("ls");
if (result == 0) {
printf("命令执行成功\n");
} else {
int exit_status = WEXITSTATUS(result);
printf("命令执行失败,错误代码:%d\n", exit_status);
}
return 0;
}
errno
和perror()
:当system()
函数返回非零值时,你可以使用errno
全局变量和perror()
函数来获取更详细的错误信息。errno
是一个整数类型,它表示最近的系统调用错误。perror()
函数会输出一个描述错误的字符串。例如:#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
int main() {
int result = system("ls");
if (result == 0) {
printf("命令执行成功\n");
} else {
perror("system()函数调用失败");
}
return 0;
}
请注意,system()
函数可能存在安全风险,因为它允许执行任意命令。在实际编程中,尽量避免使用system()
函数,而是使用更安全的替代方案,如fork()
和exec()
系列函数。