有没有办法在 main()
启动之前从静态初始化程序访问 argv
?
class FooInitializer {
public:
FooInitializer() {
// do something funny depending on argv
}
};
FooInitializer initializer;
main(int argc, char** argv) {
}
我会对 Linux 特定的解决方案感到满意。
最佳答案
您可以从 proc/self/cmdline
文件中检索传递给 Linux 中的应用程序的命令行参数。它包含完整的命令行,每个参数都用空字节(0 值)分隔。最后一个参数后面总是跟着一个附加的空字节。下面的示例展示了如何从 proc/self/cmdline 读取参数并将其输出到控制台。
#include <iostream>
#include <fstream>
#include <string>
#include <utility>
void printargs()
{
std::ifstream cmdline("/proc/self/cmdline", std::ifstream::binary);
if(cmdline.is_open())
{
for(std::string arg; std::getline(cmdline, arg); )
{
std::cout << "arg:" << arg << std::endl;
}
}
}
int main()
{
printargs();
}
关于c++ - 在 main 启动之前访问命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17119311/