2017-10-14 3 views
-1

Ich würde gerne alle möglichen Prozess-IDs durchlaufen, aber dafür müsste ich das Limit der Prozesstabelle kennen. Wie kann ich das herausfinden?Minix: Größe der Prozesstabelle ermitteln

Meine Idee ist so etwas wie

while (counter < table size) 
{ 
    do something 
} 
+0

Willkommen bei Stack-Überlauf! Bitte lesen Sie [wie Sie eine gute Frage stellen] (https://stackoverflow.com/help/how-to-ask). Ihre Frage sollte spezifisch sein und Ihr relevanter Code sollte [minimal, vollständig und verifizierbar] sein (https://stackoverflow.com/help/mcve). –

Antwort

0

Ich denke, es gibt keine Posix API diese Informationen direkt in C erhalten zu tun, müssen Sie Funktion popen() Befehlszeile aufrufen, diese Art von Informationen zu erhalten, Ich empfehle system() nicht, obwohl es mit popen ähnlich ist. (Display all process using a posix function).

Die maximale Systemprozessnummer kann mit dem Befehl ulimit eingestellt/überprüft werden.

popen("ulimit -a max user processes","r"); 

oder Sie können die aktuelle maximale Anzahl in laufenden Prozessen IDs überprüfen. (Ps aux zeigen alle Prozesse, sed letzte Zeile, und awk Fund Prozess-ID finden)

FILE *fp = popen("ps aux|sed -n '$p'|awk '{print $2F}'","r"); 
if(NULL!=fp) 
{ 
    char buff[1024]; 
    fgets(buff,1024,fp); 
    printf("%s\n",buff); 
    pclose(fp); 
} 
Verwandte Themen