从man 3 system
在Linux:
返回值
返回的值是1的错误(例如,叉(2)失败),以及以其他方式命令的返回状态。后者的返回状态采用wait(2)中指定的格式。
然后从man 2 wait
在Linux上:在INT
如果状态不为空,等待()和waitpid函数()存储状态信息,它指向。这个整数可以用下面的宏来检查(它将整数本身作为参数,而不是指向它的指针,就像在wait()和wait-pid()!中所做的那样):
WIFEXITED(status)
如果孩子正常结束,即通过调用exit(3)或_exit(2)或从main()返回,则返回true。
WEXITSTATUS(状态)
返回孩子的退出状态。这包括子进程在调用exit(3)或_exit(2)时指定的status参数的最低有效8位或作为main()中return语句的参数。仅当WIFEXITED返回true时才应使用此宏。
从SYS/wait.h在Linux上:
# define WEXITSTATUS(status) __WEXITSTATUS(__WAIT_INT(status))
从比特/ waitstatus。h在Linux上:
/* If WIFEXITED(STATUS), the low-order 8 bits of the status. */
#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
换句话说,如果您使用的是Linux,您将会使用这些宏。您正在使用HP-UX吗?我注意到您链接到HP-UX的信息。如果是这样,你的man 3 system
页面说什么?
另外,请记住,system
调用“SH -c 命令”,您将收到SH的返回值:
退出状态
应返回以下出口值:
0要执行的脚本完全由零个或多个空行或注释组成,或两者兼有。
1-125非交互式shell检测到语法,重定向或变量赋值错误。
127非交互式shell无法找到指定的command_file。
否则,shell将返回它调用或尝试调用的最后一个命令的退出状态(另请参阅特殊内置实用程序中的退出实用程序)。
如果您尝试输入什么样的返回值,例如system("exit 203");
?
我现在使用这个“解决方案”,但它会更容易,获得返回值,然后我不应该使用文件。这就是为什么,我想知道如何捕获返回值:) – kampi 2009-10-15 05:17:38