background image

Ć

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ą. 

background image

Ć

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

);  

 ...