我想要一个实用程序函数,它返回调用它的程序的完整命令行。换句话说,
std::string cmd_line();
int main(int argc, char**argv)
{
std::cout << "the current program command line is \""
<< cmd_line() << "\"\n";
}
用c++ -o my_program test.cc
编译的(或等效的C程序)应该在my_program x=7
the current program command line is "my_program x=7"
现在,在linux下,我设法从/proc/pid/cmdline
开始,pid
获取getpid()
(来自unistd.h
)。在Mac OS下我该怎么办?有更便携的方式吗?
注意1在编辑中添加在上面的示例中,当然可以简单地使用argv[]
。但我希望cmd_line()
可以从第三方库函数中使用,而无需argv[]
的知识。因此,需要在初始化时向提供argv[]
的库提供cmd_line()
信息。可以做到,但有点麻烦。我正在寻找一种方法来利用运行时系统本身的程序初始化。
注释2在编辑中添加获取正在运行的可执行文件的(绝对或相对)路径的相关问题是this SO question的主题。