[英]Capturing and displaying return value from a call to C system()
我在ubuntu linux 10.04上我有以下内容
#simplec.c
#include "stdio.h"
int main()
{
printf("Hello World\n");
system("ps -H");
return 12;
}
和
#callsimplec.c
#include "stdio.h"
int main()
{
int ret =0;
ret = system("./simplec");
printf("In callsimplec ret is %d\n", ret);
}
当我做
gcc callsimplec.c -o callsimplec
gcc simplec.c -o simplec
./callsimplec
我得到:
Hello World
PID TTY TIME CMD
27238 pts/2 00:00:00 bash
28066 pts/2 00:00:00 callsimplec
28067 pts/2 00:00:00 simplec
28068 pts/2 00:00:00 ps
In callsimplec ret is 3072
因此,我得出了输出3072的信息,因为256乘以12是3072。无论我在simplec.c中使用什么返回值,我都会得到该值乘以256作为打印输出。 这是为什么? 我只是想让它有意义。
system
返回的值应与以下宏一起使用:WEXITED,WIFEXITSTATUS等。
根据情况, system
(和wait
家庭)返回的值是:
正常终止:
15 ............. 8 ............. 0 exit status 0x00
被信号杀死:
15 ............. 8 7............ 0 unused killer signal
被信号停止
15 ............. 8 ............. 0 stop signal 0x7f
信号继续
15 ............................. 0 0xFFF
因此,在您的情况下,该过程正常退出,并且系统返回12
偏移8次 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.