程序是从命令行执行还是通过系统调用调用

时间:2015-05-01 08:48:45

标签: linux command-line executable invoke system-calls

平台是linux,c代码是用gcc编译的。

是否可以从程序代码内部了解其可执行文件是直接从命令行执行还是通过“system”调用调用? 例如test.exe可以直接在命令行上运行./test.exe或通过system("/home/mydir/test.exe")执行。如何在运行程序中知道如何调用它?

1 个答案:

答案 0 :(得分:1)

这是不可能确定的,因为在一天结束时你最终做了execve。您可以使用一些奇怪的启发式方法,例如检查父进程,但这都是废话。

真正的问题是你为什么要关心,或者:实际的问题是什么?

如果该system()使用者应该以不同的方式执行某些操作,请让它传递一个特殊参数或设置传递给该进程的特殊环境变量。