是否可以分析程序的返回值?

时间:2014-08-14 04:20:48

标签: c++ c

是否可以分析main程序的返回值?

例如:

int main() {    
    //stuff
    return something;
}

有没有办法检查“something”的值是什么并进行更改? 例如,我的程序应该是return 3;

有没有办法检查something是否返回3,如果不是这样,将其更改为3然后返回3?

2 个答案:

答案 0 :(得分:3)

当然,只需打包程序即可。一种简单的方法是编写脚本:

#!/bin/sh

myprogram "$@" # pass any args we got
exit 3

答案 1 :(得分:3)

它实际上是特定于操作系统的。在Posix和Linux上,阅读waitpid(2)。另请参阅this answer(以某种方式相关的问题),它提供了有用的参考。对于Linux,请阅读Advanced Linux Programming(大部分内容与Linux和MacOSX等Posix系统相关)。

您的程序可能会在某些有限的环境中运行,例如在裸机上运行的监视器(或某些小型实时系统,如Vxorks)。然后main的返回码可能有不同的含义,可能无法轻易测试或更改。

请注意,main的返回码被称为exit(2)代码 - 至少在Posix系统上。在Linux上,它只有一个字节。如果main返回1000,则退出代码为1000&0xff,即232.

AFAIK,标准C或C ++只知道来自EXIT_SUCCESS的{​​{1}}(应为0)和EXIT_FAILURE(Linux上为1)。像3这样的其他值具有特定于实现的含义。