Доступ к командной строке до запуска main

Есть ли способ доступа argv от статического инициализатора до main() был начат?

class FooInitializer {
public:
FooInitializer() {
// do something funny depending on argv
}
};

FooInitializer initializer;main(int argc, char** argv) {
}

Я буду счастлив с конкретным решением для Linux.

1

Решение

Вы можете получить аргументы командной строки, переданные приложению в 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();
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector