为什么这个exit函数在C语言的末尾加两个零?
Why does this exit function add two zeros at the end in C?
嘿,所以我用 C 编写了一个大学程序,子程序应该以十六进制 0xAA 退出,但它还在末尾添加了两个零?为什么要这样做?我在监督什么吗?
pid_t cpid;
int status;
cpid = fork();
if (cpid==-1){
return -1;
}
else if(cpid==0){
pid_t pid_child = getpid();
pid_t ppid_child = getppid();
printf("ChildProcessID from Child: %d\n",pid_child);
printf("ParentProcessID from Child: %d\n",ppid_child);
exit(0xAA);
}
else{
printf("ChildProcessID: %d\n",cpid);
wait(&status);
printf("Exit Status Child: %#X\n",status);
}
在它应该输出的最后
Exit Status Child: 0XAA
它推出
Exit Status Child: 0XAA00
如果有任何格式错误或遗忘,我深表歉意。这是我第一次 post 在这里。
提前致谢。
当 wait
returns 时,给定参数包含除退出代码之外的其他信息。它还会告诉您进程是否正常终止。
您可以使用宏来提取相关部分:
wait(&status);
if (WIFEXITED(status)) {
printf("Exit Status Child: %#X\n",WEXITSTATUS(status));
} else if (WIFSIGNALED(status)) {
printf("Child exited abnormally via signal %d\n", WTERMSIG(status));
} else {
printf("Something else happened\n");
}
嘿,所以我用 C 编写了一个大学程序,子程序应该以十六进制 0xAA 退出,但它还在末尾添加了两个零?为什么要这样做?我在监督什么吗?
pid_t cpid;
int status;
cpid = fork();
if (cpid==-1){
return -1;
}
else if(cpid==0){
pid_t pid_child = getpid();
pid_t ppid_child = getppid();
printf("ChildProcessID from Child: %d\n",pid_child);
printf("ParentProcessID from Child: %d\n",ppid_child);
exit(0xAA);
}
else{
printf("ChildProcessID: %d\n",cpid);
wait(&status);
printf("Exit Status Child: %#X\n",status);
}
在它应该输出的最后
Exit Status Child: 0XAA
它推出
Exit Status Child: 0XAA00
如果有任何格式错误或遗忘,我深表歉意。这是我第一次 post 在这里。 提前致谢。
当 wait
returns 时,给定参数包含除退出代码之外的其他信息。它还会告诉您进程是否正常终止。
您可以使用宏来提取相关部分:
wait(&status);
if (WIFEXITED(status)) {
printf("Exit Status Child: %#X\n",WEXITSTATUS(status));
} else if (WIFSIGNALED(status)) {
printf("Child exited abnormally via signal %d\n", WTERMSIG(status));
} else {
printf("Something else happened\n");
}