是否可以分析main
程序的返回值?
例如:
int main() {
//stuff
return something;
}
有没有办法检查“something
”的值是什么并进行更改?
例如,我的程序应该是return 3;
有没有办法检查something
是否返回3,如果不是这样,将其更改为3然后返回3?
答案 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这样的其他值具有特定于实现的含义。