argv
開始される前に静的初期化子からアクセスする方法はありmain()
ますか?
class FooInitializer {
public:
FooInitializer() {
// do something funny depending on argv
}
};
FooInitializer initializer;
main(int argc, char** argv) {
}
Linux固有のソリューションに満足しています。
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();
}