Есть ли способ доступа argv
от статического инициализатора до main()
был начат?
class FooInitializer {
public:
FooInitializer() {
// do something funny depending on argv
}
};
FooInitializer initializer;main(int argc, char** argv) {
}
Я буду счастлив с конкретным решением для Linux.
Вы можете получить аргументы командной строки, переданные приложению в Linux из proc/self/cmdline
файл. Он содержит полную командную строку с каждым аргументом, разделенным нулевым байтом (значение 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();
}
Других решений пока нет …