我有一个简单的脚本
#!/usr/bin/bash
# exit5.bash
exit 5
Run Code Online (Sandbox Code Playgroud)
我用交流程序中的系统来称呼它
#include <stdlib.h>
#include <stdio.h>
int main()
{
int ret = system("./exit5.bash");
printf("%d\n", ret);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我看到1280打印到屏幕上,这与 5 << 8
为什么我看不到常规5?
返回值system是终止状态,而不是退出代码。
在最后两种情况下,返回值是“等待状态”,可以使用waitpid(2)中描述的宏来检查该状态。(即,
WIFEXITED(),WEXITSTATUS(),等等)。
您要查找的内容由WEXITSTATUS宏返回:
WEXITSTATUS(wstatus)返回子项的退出状态。它由状态参数的最低有效8位组成,该状态参数由子级在中调用
exit(3)或_exit(2)或作为return语句的参数时指定main()。仅当WIFEXITED返回true 时,才应使用此宏。
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |