为何在C语言程序结束处,退出函数后特意追加两个零字符?
- 内容介绍
- 文章标签
- 相关推荐
本文共计444个文字,预计阅读时间需要2分钟。
哦,为什么我在C语言中编写的程序,孩子应该使用十六进制退出,但它最后还额外加了两个零?为什么这样做?我在关注什么? +pid_t cpid; int status; cpid=fork(); if (cpid==-1) { return -1; } else if (cpid==0) { ... } else { ... } +
这段代码是在C语言中用fork系统调用来创建一个子进程,并询问为什么子进程退出的十六进制代码会多出两个零,以及编程者关注的点。这里简单改写为:
编写C程序时,我发现子进程退出的十六进制码比预期多了两个零。这做法有什么道理?我在注意程序退出的哪个方面? +pid_t cpid; int status; cpid=fork(); if (cpid==-1) { return -1; } else if (cpid==0) { ... } else { ... }+
嘿所以我在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
如果有任何错误格式或遗忘任何内容,我很抱歉.这是我在这里发表的第一篇文章.
提前致谢.
您可以使用宏来提取相关部分:
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"); }
本文共计444个文字,预计阅读时间需要2分钟。
哦,为什么我在C语言中编写的程序,孩子应该使用十六进制退出,但它最后还额外加了两个零?为什么这样做?我在关注什么? +pid_t cpid; int status; cpid=fork(); if (cpid==-1) { return -1; } else if (cpid==0) { ... } else { ... } +
这段代码是在C语言中用fork系统调用来创建一个子进程,并询问为什么子进程退出的十六进制代码会多出两个零,以及编程者关注的点。这里简单改写为:
编写C程序时,我发现子进程退出的十六进制码比预期多了两个零。这做法有什么道理?我在注意程序退出的哪个方面? +pid_t cpid; int status; cpid=fork(); if (cpid==-1) { return -1; } else if (cpid==0) { ... } else { ... }+
嘿所以我在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
如果有任何错误格式或遗忘任何内容,我很抱歉.这是我在这里发表的第一篇文章.
提前致谢.
您可以使用宏来提取相关部分:
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"); }

