コマンドライン内のデータを使用して、アプリが呼び出されたパラメーターを抽出しようとしています。
このようなアプリケーションインスタンスを起動すると、次のようになります。
myapp 1 2
次に、myappのコマンドラインをcatします。myapp12のようなものが表示されます。
これらの値を抽出する必要があり、このコードを使用して抽出しました
pid_t proc_id = getpid();
sprintf(buf,"/proc/%i/cmdline",proc_id);
FILE * pFile;
pFile = fopen (buf,"r");
if (pFile!=NULL)
{
fread(buf,100,100,pFile);
cout << "PID " << proc_id << endl;
string str = buf;
cout << buf << endl;
size_t found=str.find_last_of("/\\");
cout << " file: " << str.substr(found+1) << endl;
fclose (pFile);
}
しかし、私が得ているのはアプリ名だけで、パラメーターはありません...
回答からコピーされた更新:
さて、私の質問は、最初のNULL文字で停止せずにcmdlineファイルを読み取る方法のようです...
fopen(cmdline, "rb")
他には何もしませんので...