嘿所以我在C中为大学做了一个程序,孩子应该以十六进制0xAA退出但是它最后还加了两个零?为什么这样做?我在监督什么吗? pid_t cpid;int status;cpid = fork();if (cpid==-1){ return -1;}else if(cpid
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
如果有任何错误格式或遗忘任何内容,我很抱歉.这是我在这里发表的第一篇文章.
提前致谢.
您可以使用宏来提取相关部分:
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"); }