gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:37:50 25 4
gpt4 key购买 nike

我在 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 次

关于捕获并显示调用 C system() 的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7449913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com