lab5


PS
Wyświetlany jest identyfikator procesu (PID), terminal (tty), do którego proces jest podłączony (TTY),
łączny czas procesora w formacie [dd-]hh:mm:ss (TIME) oraz nazwa pliku wykonywalnego (CMD)
Każdy proces ma swój unikalny identyfikator w systemie
PID (ang. Process identifier).
Dla każdego procesu można więc podać identyfikator procesu, który go utworzył
PPID (ang. Parent PID).
STAT - status procesu
| R - proces dzialajacy (ang. running)
| T - proces zatrzymany (ang. stopped)
| P - proces w stanie spoczynku (ang. page wait)
| D - proces w stanie spoczynku (ang. disk wait)
| S - proces w stanie spoczynku (ang. sleeping)
| I - proces w stanie spoczynku (ang. idle)
| Z - proces duch (ang. zombie), zakonczyl sie ale nie rozliczyl
| sie jeszcze z procesami nadrzednymi!

-a
Wybór wszystkich procesów poza liderami sesji (zobacz getsid(2) ) i procesami nie podłączonymi do żadnego terminala.

a
Uruchamia restrykcję w stylu BSD tylko własne", która jest nakładana na zbiór wszystkich procesów,
jeżeli są używane jakieś opcje w stylu BSD (bez -") lub gdy osobowość ps jest z rodziny BSD.
Wybrany w ten sposób zbiór procesów jest dołączany do zbioru procesów wybranych w inny sposób.
Alternatywny opis jest taki, że ta opcja powoduje wylistowanie przez ps wszystkich procesów mających
przypisany terminal (tty) lub wylistowanie wszystkich procesów, jeżeli użyta łącznie z opcją x.

-e
Wybór wszystkich procesów. Identyczne z -A.

x
Uruchamia restrykcję w stylu BSD musi mieć tty", która jest nakładana na zbiór wszystkich procesów,
jeżeli są używane jakieś opcje w stylu BSD (bez -") lub gdy osobowość ps jest z rodziny BSD. Wybrany
w ten sposób zbiór procesów jest dołączany do zbioru procesów wybranych w inny sposób. Alternatywny opis
jest taki, że ta opcja powoduje wylistowanie wszystkich procesów, których jesteś właścicielem
(EUID taki sam jak procesu ps), lub wylistowanie wszystkich procesów, jeśli użyta łącznie z opcją a.

-u userlist
Wybór przez podanie efektywnego identyfikatora użytkownika (EUID) bądź nazwy. Wybiera procesy,
których efektywna nazwa użytkownika lub ID jest w userlist. Efektywne ID użytkownika opisuje użytkownika,
którego prawa dostępu do plików są używane przez proces (patrz geteuid(2) ). Identyczne z U i --user.

-f
Wyjście w pełnym formacie. Ta opcja może być połączona z wieloma innymi opcjami w stylu UNIX,
aby dodać dodatkowe kolumny. Także powoduje wypisywanie argumentów poleceń. Użyta z -L dodaje
kolumny NLWP (liczba wątków) i LWP (ID wątku).

-------------------------------------------------------------------------------------------------------

NAZWA
wait, waitpid - oczekiwanie na zakończenie procesu

SKŁADNIA
#include
#include

pid_t wait(int *status);
pid_t waitpid(pid_t pid, int *status, int options);

OPIS
Funkcja wait zatrzymuje wykonywanie bieżącego procesu aż do zakończenia procesu potomka
lub aż do dostarczenia sygnału kończącego bieżący proces lub innego, dla którego wywoływana
jest funkcja obsługi sygnału. Jeśli potomek zakończył działanie przed wywołaniem tej funkcji
(tak zwany proces-duch - "zombie"), to funkcja kończy się natychmiast. Wszelkie zasoby potomka są zwalniane.

Funkcja waitpid zawiesza wykonywanie bieżącego procesu dopóki potomek określony przez pid nie zakończy
działania lub dopóki nie zostanie dostarczony sygnał, którego akcją jest zakończenie procesu
lub wywołanie funkcji obsługującej sygnały. Jeśli potomek, podany jako pid, zakończył swoje działanie
przed wywołaniem tej funkcji (tak zwany proces "zombie"), funkcja kończy się natychmiast.
Wszelkie zasoby potomka są zwalnianie.

Wartość pid może być:
< -1
co oznacza oczekiwanie na dowolny proces potomny, którego ID grupy procesów jest równy wartości bezwzględnej pid.
-1
co oznacza oczekiwanie na dowolny proces potomny; jest to takie samo zachowanie, jakie wykazuje wait.
0
co oznacza oczekiwanie na każdy proces potomny, którego ID grupy procesu jest równe ID grupy procesu wywołującego funkcję.
> 0
oznacza oczekiwanie na potomka, którego ID procesu jest równy wartości pid.

WIFEXITED(status)
jest niezerowe, jeśli potomek normalnie zakończył pracę.

WSTOPSIG(status)
zwraca numer sygnału, który spowodował zatrzymanie potomka. Makro to może być przetworzone, tylko jeśli
WIFSTOPPED zwróciło wartość niezerową.

-------------------------------------------------------------------------------------------------------
EXECL

SKŁADNIA
#include

extern char **environ;

int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg , ..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);

OPIS
Rodzina funkcji exec zastępuje w pamięci obraz aktualnego procesu obrazem nowego procesu.

Pierwszym argumentem tych funkcji jest ścieżka do pliku, który ma być uruchomiony.

Kolejne wyrażenia const char *arg w funkcjach execl, execlp, i execle można traktować
jako arg0, arg1, ..., argn. Razem opisują one listą jednego lub więcej wskaźników
do zakończonych znakiem NULL łańcuchów, reprezentujących listę argumentów udostępnianych wykonywanemu programowi.
Pierwszy argument, zgodnie z konwencją, powinien wskazywać na nazwę pliku powiązaną z wykonywanym plikiem.
Lista argumentów musi być zakończona wskaźnikiem NULL.

-------------------------------------------------------------------------------------------------------
PTHREAD

Typy:

pthread_t
identyfikator wątku

pthread_attr_t
atrybutów wątku

Funkcje:
int pthread_create(pthread_t *id, const pthread_attr_t *attr, void* (fun*)(void*), void* arg) (doc)

id - identyfikator wątku;
attr - wskaźnik na atrybuty wątku, określające szczegóły dotyczące wątku; można podać NULL, wówczas zostaną użyte domyślne wartości;
fun - funkcja wykonywana w wątku; przyjmuje argument typu void* i zwraca wartość tego samego typu;
arg - przekazywany do funkcji.

Oczekiwanie na zakończenie wątku

Oczekiwanie na zakończenie wątku jest dodatkowym sposobem synchronizacji między wątkami i dotyczy wyłącznie wątków typu joinable (zobacz Rodzaje wątków poniżej). Wątek wywołujący pthread_join zostaje wstrzymany do chwili, gdy wskazany wątek zakończy działanie - wówczas wątek oczekujący jest kontynuowany, a pthread_join przekazuje wartość wynikową zwróconą przez wątek. Jeśli wątek został przerwany wartością zwracaną jest stała PTHREAD_CANCELED. Uwaga!
Jeśli wątek "zapętli się", oczekujący na jego zakończenie inny wątek nie jest już w stanie nic zrobić.


Oczekiwanie na zakończenie wątku można uzyskać zmiennymi warunkowymi (dodatkowo bez ograniczań na rodzaj wątku), wymaga to jednak dodatkowej pracy ze strony programisty.

Funkcje
int pthread_join(pthrea_t id, void **retval)
id - identyfikator wątku, którego zakończenie jest oczekiwane;
retval - wskaźnik na wartość wynikową wątku; może być NULL, wówczas wynik jest ignorowany

Wyszukiwarka

Podobne podstrony:
Lab5
Lab5 1 R4 lab51
lab5
peie lab5
AKiSO lab5
ASK LAB5 Mnozenie
lab5 anfis
PW Lab5 Robert Matejczuk
lab5 MetodyPomiaruMocy
LAB5 W Bąk EN DI2 L1
Lab5
lab5 rownania nieliniowe
lab5 mat
lab5
Lab5 1 R3 lab51
IMiR Lab5 Nonlinear equations

więcej podobnych podstron