有可能分析程序的返回值吗?
Is it possible to analyze the return value of a program?
是否可以分析main
程序的返回值?
int main() {
//stuff
return something;
}
是否有一种方法来检查什么值将是"something
"和改变它?例如,我的程序期望return 3;
是否有一种方法来检查something
是否返回3,如果这不是真的,将其更改为3,然后返回3?
当然可以,把程序包装一下。一个简单的方法是编写一个脚本:
#!/bin/sh
myprogram "$@" # pass any args we got
exit 3
它实际上是特定于操作系统的。在Posix和Linux上,请阅读waitpid(2)。请参阅这个答案(对某种程度上相关的问题),它提供了有用的参考。对于Linux,请阅读高级Linux编程(其中大部分与Posix系统相关,如Linux和MacOSX)。
您的程序可能在一些有限的环境中运行,例如在裸机上运行的监视器(或像Vxorks这样的小型实时系统)。那么main
的返回码可能有不同的含义,并且可能不容易测试或更改。
注意main
的返回码被称为exit(2)码——至少在Posix系统上是这样的。在Linux上,它只有一个字节。如果main
返回1000,退出码将是1000&0xff
,即232。
AFAIK,标准C或c++只知道EXIT_SUCCESS
(应该是0)和EXIT_FAILURE
(在Linux上是1)从<stdlib.h>
。
相关文章:
- 从python中调用C++函数并获取返回值
- 为什么模板类中的对象不能返回值
- 返回值优化:显式移动还是隐式
- 程序不向函数返回值
- 参数传递和返回值如何在程序集级别的 x86 上的 C/C++ 中工作?
- C++ Argv[1] 终止程序,返回值 9009
- C - 程序返回值而无需返回语句
- 如何调用外部程序并在 C/C++ 中获取多个返回值
- 程序未完成返回值3221225477没有编译器错误
- 当 C++11 应用程序使用非 C++11 库时返回值损坏
- 如何使用 Visual Studio 2005 获取两个不同 c++ 程序之间的返回值
- 从 MFC(c++) 应用程序启动的可执行 jar 中获取返回值
- C++:程序不输出函数返回值
- 这是从信号处理程序返回值的可靠方法吗
- 家庭作业援助,程序没有返回值
- 如何将实用程序 (grep/sed) 的返回值分配给数组
- 如何从c++主应用程序返回值到c# GUI应用程序
- 有可能分析程序的返回值吗?
- Bash可以从c++程序接收参数或返回值吗?
- 字符串比较返回值(Is用于对字符进行排序的应用程序?)