Portál AbcLinuxu, 12. května 2025 05:10
Ahoj
chcel by som v rámci c++ programu meniť a zistovať prioritu procesu.
Z manuálu:
int getpriority(int which, id_t who);
The which argument may be one of the following values: PRIO_PROCESS, PRIO_PGRP, or PRIO_USER, indicating that the who argument is to be interpreted as a process ID, a process group ID, or an effective user ID, respectively.
V mojom programe si zistim z /proc/ PID bežiacich procesov. To je to "who". id_t by mal byť typ z <sys/types.h>. prvá otázka je ako konvertujem string - názov adresára na typ id_t? Na int to konvertovať dokážem.
Druhá otázka - ked mám PID procesu ako zistím to "which" (PRIO_PROCESS, PRIO_PGRP, or PRIO_USER). A osobne sa mi táto informácia zdá nadbytočná, PID by malo byť dostatočné...
Vopred vďaka za odpoved
which
- ak ťa zaujíma priorita procesu, tak použi PRIO_PROCESS. Je to predsa jasne napísané v getpriority(2)
Ak which je PRIO_PROCESS, tak do who
vkladáš PID. Pid je číslo. Skonvertovať reťazec (meno adresára) na číslo môžno napríklad pomocou atoi(3) alebo sscanf()
PRIO_PROCESS
predsa je číslo. Konkrétne 0.
no z môjho začiatočníckeho pohľadu premenná PRIO_PROCES neexistuje a nemá žiadnu hodnotu.
Ano, neexistuje. Ale existuje makro toho jména a to expanduje na nulu. Což vás ovšem zajímat nemusí, vám stačí vědět, že když použijete tuto konstantu, bude se to chovat určeným způsobem.
tak dalšie dve možnosti: PRIO_PGRP a PRIO_USER majú iné hodnoty, predpokladám...
Samozřejmě. Podívejte se do toho hlavičkového souboru a budete mít jasno.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.