在Linux中,当一个进程正常终止时,它会返回一个退出状态码(exit status code)
exit函数原型如下:
#include <stdlib.h>
void exit(int status);
其中,status参数就是进程的退出状态码。通常情况下,0表示成功,非0值表示出错。当你调用exit函数时,它会将这个退出状态码传递给操作系统,然后终止进程。
在Shell中,你可以使用特殊变量$?
来获取上一个命令的退出状态码。例如:
$ ./my_program
$ echo $?
这将输出my_program的退出状态码。
在C语言中,你可以使用WEXITSTATUS
宏来获取子进程的退出状态码。例如:
#include <sys/wait.h>
#include <unistd.h>
#include<stdio.h>
int main() {
pid_t pid = fork();
if (pid == 0) { // 子进程
execl("./my_program", "my_program", NULL);
} else { // 父进程
int status;
wait(&status);
printf("Child process exited with status: %d\n", WEXITSTATUS(status));
}
return 0;
}
这段代码首先创建一个子进程,然后在子进程中运行my_program。父进程等待子进程终止,并使用WEXITSTATUS
宏获取子进程的退出状态码。