Ć
wiczenie 5
Pakiet QNX Momentics IDE 4.7
Procesy cd.
Wykonanie polecenia systemowego
Funkcja
system
powoduje uruchomienie interpretera poleceń sh i przekazanie mu do wykonania
łańcucha polecenie. Tym sposobem uruchomione mogą być programy, polecenia systemu lub skryp-
ty.
int system(char*polecenie)
Ć
wiczenie:
Napisać program tworzący nowy proces za pomocą polecenia system. Odpowiednim poleceniem sprawdzić ka-
talog, w którym umieszczane są binaria procesów i jaka jest ich identyfikacja.
Priorytet procesu
Jednym z atrybutów procesu jest jego priorytet. Priorytet można uzyskać za pomocą funkcji:
getprio()
lub
sched_getparam()
a ustawić funkcjami:
setprio()
lub
sched_setparam()
Składnia funkcji getprio i setprio:
int getprio(pid_t pid)
– pobranie priorytetu procesu,
int setprio(pid_t pid, int prio)
– ustawienie priorytetu procesu, funkcja zwraca
poprzedni priorytet lub -1 gdy wystąpi błąd.
Dokładniej, funkcja setprio ustawia priorytet pierwszego wątku procesu – na razie mamy procesy
jednowątkowe.
Dla ustawienia priorytetu można użyć poznanej funkcji getpid lub ustawić 0 dla procesu bieżącego.
Ć
wiczenie
1.
Napisać program testujący i ustawiający priorytet dla bieżącego procesu – wypisać priorytet poprzedni i
ustawiony.
2.
Napisać program ustawiający priorytet dla procesu macierzystego oraz procesu współbieżnego, utworzone-
go funkcją
spawnl
.
Składnia funkcji sched_getparam i sched_setparam:
int sched_getparam(pid_t_pid, struct sched_param*par)
- pobranie parame-
trów szeregowania,
int sched_setparam(pid_t_pid, struct sched_param*par)
- ustawienie para-
metrów szeregowania.
Są one zdefiniowane w pliku nagłówkowym <sched.h>
sched_param jest strukturą o polach:
sched_priority
– priorytet na starcie procesu
sched_curpriority
– priorytet tymczasowy nadany przez procedurę szeregującą.
Ć
wiczenie
Wykorzystać funkcje pobrania struktury parametrów oraz zmiany priorytetu procesu w programie QNX/C,
stosując przykładowy zapis:
...
struct
sched_param par;
sched_getparam
(getpid(), &par);
printf (" Priorytet:%u \n",
par.sched_curpriority
);
...