Я пытаюсь извлечь параметр, с которым было вызвано приложение, используя данные внутри cmdline.
Если я запускаю экземпляр приложения следующим образом:
мое приложение 1 2
а затем введите командную строку myapp, я увижу что-то вроде 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);
}
Но то, что я получаю, это только имя приложения и никаких параметров...
Обновление скопировано из ответа:
ну, теперь мой вопрос, похоже, заключается в том, как мне прочитать файл cmdline, не останавливаясь на первом символе NULL...
fopen(cmdline, "rb")
больше ничего не делает...
fread(buf,1,100,pFile);
(размер = 1, количество = длина буфера). - person opello   schedule 20.04.2011