J'essaie d'extraire le paramètre avec lequel une application a été appelée en utilisant les données dans cmdline.analyse proc/pid/cmdline pour obtenir les paramètres de la fonction
Si je commence une instance d'application comme ceci:
monapp 1 2
puis chat le cmdline de monapp je verrai quelque chose comme myapp12.
je devais extraire ces valeurs et moi ce morceau de code pour le faire
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);
}
Mais ce que je veux est que le nom de l'application et aucun paramètre ...
Mise à jour coppied de réponse:
bien, ma question semble maintenant comment puis-je lire le fichier cmdline sans l'arrêter au premier caractère NULL ...
fopen(cmdline, "rb")
ne fait rien d'autre si ...
Après avoir combattu cela aujourd'hui, je voulais noter que je devais utiliser: 'fread (buf, 1,100, pFile);' (size = 1, count = longueur du tampon). – opello