繁体   English   中英

捕获并显示对C system()的调用的返回值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM