【发布时间】:2015-05-01 08:48:45
【问题描述】:
平台是 linux,c 代码是在 gcc 中编译的。
是否可以从程序代码内部知道其可执行文件是直接从命令行执行还是通过“system”调用调用的?
例如test.exe 可以直接在命令行上以./test.exe 运行或通过system("/home/mydir/test.exe") 执行我如何知道正在运行的程序内部它是如何被调用的?
【问题讨论】:
-
命令行解释器使用系统调用来运行程序,从操作系统的角度来看没有区别。
-
而且
system(...)在非交互模式下运行命令行解释器,所以也没有太大区别。 -
听起来不可能破译@myaut
-
你可以修改内核,以便在
execve系统调用中保存用户空间堆栈,但实现起来非常复杂。 -
谢谢@Paul!我喜欢你的简单建议
标签: linux command-line executable invoke system-calls