Medziprocesorova komunikacia Flashcards

1
Q

Z akych dovodov posobia procesy na seba?

A
  1. neumyselne - vykonavaju sa bez ohladu na ine procesy, sutazia o prostriedky
  2. nepriamo - vedia o existencii inych procesov, ale nevedia nic viac, napriklad pouzivaju rovnaky subor
  3. umyselne - spolupracuju, komunikuju
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Co je komunikacia medzi procesmi?

A

Vymena dat

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Co je synchronizacia vykonavania procesov?

A

treba dodrzat poradie vykonania procesov

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Co je subeh?

A

Procesy pristupujúce do spoločnej pamäti sa môžu vykonávať súbežne, respektíve v ľubovoľnom poradí.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Kedy moze nastat prerusenie procesu?

A

Medzi dvoma instrukciami, pouzitie instrukcie je atomicke

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Aky je rozdiel medzi CISC a RISC pri incremente a++?

A

V CISC je to atomicka operacia inc a, v RISC treba po jednom loadnut, inc a ulozit, teda sa moze preplanovat hocikedy medzi

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Ako nazyvame situaciu, ked viacero procesov pristupuje k rovnakej premennej a vysledok zavisi od poradia?

A

subeh - race condition

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Preco race condition?

A

Procesy sutazia o pristup a vysledok zavisi od toho kto bude prvy

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Co je vzajomne vylucovanie?

A

Aby k spolocnemu prostriedku pristupoval v kazdom case najviac jeden z procesov

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Ako sa nazyva usek programu kde sa vykonava pristup k spolocnemu prostriedku?

A

kriticka oblast

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Program v kritickej oblasti smie byt teda vykonavany kolko procesmi?

A

jednym

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Riesenia mut. ex. vieme rozdelit na ..?

A

cisto programove a hardverove

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Ake su hw implementacie mut ex?

A

zakazanie preruseni, specialne instrukcie a pod

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Aka je nevyhoda zakazania prerusenia?

A

neobsluhuju sa chyby od I/O

v pripade chyby sa zasekne cely system

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

kedy sa pouziva zakazanie prerusenia?

A

v jadre na kratke casy

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Co je problem ked ma system viac CPU?

A

zakazanie preruseni na jednom z nich nestaci

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Aky je problem pri CISC a viac CPU pri atomickej operacii inc?

A

subezne moze pristupit k pamati proces na inom procesore

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Ake je hw riesenie pri viac CPU?

A

uzamknutie zbernice signalom lock ako prefix instrukcie

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Ake je riesenie “spolocny zamok”?

A

spolocna premenna lock
enterCS: while(lock); lock = TRUE
leaveCS: lock = FALSE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Aky je problem pre spolocny zamok?

A

ak bude proces preplanovany tesne po tom co ukonci while a pred tym co nastavi LOCK na true, teda tam vedia vojst oba procesy

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Ake je riesenie “striedanie”?

A

spolocna premenna urcuje kto smie vojst, pred vstupom proces pocka kym bude na rade

enum {P, Q} turn = P;
EnterCS_P() { while(turn != P); }
LeaveCS_P() { turn = Q; }
pre Q rovnako

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Preco je zle riesenie “striedanie”?

A

Vynucujeme striedanie, teda ak jeden treba castejsie, tak to zbytocne spomaluje

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Aka je druha podmienka riesenia mut ex?

A

Proces ktorý sa \vykonáva mimo kritickej oblasti nesmie brániť iným vstúpiť do nej.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Ake je riesenie “zamok pre kazdy proces”?

A

kazdy proces ma svoju premennu ktora indikuje potrebu vstupit do kritickej oblasti, pred vstupom ju nastavi na true a pocka ak aj druhy bude chciet vojst

inP, inQ = FALSE
EnterCS_P() { inP = TRUE; while(inQ); }
LeaveCS_P() { inP = FALSE; }

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Aky je problem riesenia zamok pre kazdy proces?

A

preplanovanie po nastaveni na true, nastane deadlock a system sa zasekne, nikto to nezmeni na false

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Ake je riesenie “prerusenie cakania”?

A

Kazdy proces ma premennu ktora indikuje vstup do crit. section. Nastavi na 1, ak ale aj druhy ma 1, tak nastavi na 0 a pokus zopakuje, inak break, cele to bezi vo while(1)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Aky je problem riesenia prerusenie cakania?

A

livelock - navzajom sa uprednostnuju a nikto tam nevstupi, ak sa preplanuju vzdy po nastaveni premennej na true

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Ake su 4 podmienky riesenia synch. problemu mut ex?

A

1) V kritickej oblasti sa smie vykonávať v každom čase najviac jeden proces.
2) Proces ktorý sa vykonáva mimo kritickej oblasti nesmie brániť iným vstúpiť do nej.
3) Rozhodnutie o vstupe musí prísť v konečnom čase.
4) Procesy nemôžu pri vstupe do kritickej oblasti predpokladať nič
o vzájomnom časovaní (plánovaní).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Aké je petersonovo riešenie?

A
da sa rozsirit aj na N > 2 procesov
mame premenne int inP = FALSE, inQ = FALSE;
enum {P, Q} last = P;
enter je ze
inP = TRUE;
last = P;
while(inQ && last == P);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Ako znacime instrukciu ktora chceme aby sa vykonala atomicky?

A

&laquo_space;…&raquo_space;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Co je instrukcia TSL?

A

Test and set lock

nastavi lock na 1 a vrati predosliu hodnotu locku

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Co je instrukcia XCHG?

A

Exchange

vymeni hodnoty parametra a a lock

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Co je instrukcia FA?

A

Fetch and add

prida k hodnote premennej a vrati staru hodnotu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Ako vieme spravit V/V protokol s pouzitim TSL?

A

int lock = FALSE;
EnterCS() { while (TS(&lock)); }
LeaveCS() { lock = FALSE; }

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

Co je spinlock?

A

Zamok implementovany pomocou cakania v tesnej slucke

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

Co je ticket algoritmus?

A

Algoritmus pre mut ex N procesov inspirovany systemom cakania na poradie
Kazdy proces dostane ticket, planovac inkrementuje aktualny tiket a ked ma proces svoj tiket tak je na rade

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

Co je problem ticket alg?

A

ak zlyha proces tak ostatne cakaju navzdy

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

Aka je kriticka oblast ticket alg?

A

Pridelenie tiketu procesu - je tam inkrement takze 2 procesy mozu dostat rovnake cislo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

Co je bakery algoritmus?

A

ako ticket algoritmus, ale nepotrebuje specialnu instrukciu, ak maju 2 rovnake cislo tak sa rozhodne o ich poradi napr podla PID

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q

Aka je zlozitost ticket alg?

A

O(1)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

Aka je zlozitost bakery alg?

A

O(n)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

Co je obsadzujuce cakanie?

A

Procesor caka v tvare while(lock) - nevykonava ziadnu uzitocnu pracu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
43
Q

Aka je nevyhoda obsadzujuceho cakania navyse v multiprocesorovych systemoch?

A

zahlcovanie zbernice citanim jednej premennej dokola

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
44
Q

Ake je riesenie obsadzujuceho cakania?

A

Napr signaly a wait

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
45
Q

Co je semafor?

A

Vseobecny synchronizacny mechanizmus, v podstate cele nezaporne cislo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
46
Q

Aka je hlavna vyhoda semaforu?

A

Odstranuje obsadzujuce cakanie, proces bude v blokovanom stave

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
47
Q

Aka je “nevyhoda” semaforu?

A

Treba podporu priamo od OS

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
48
Q

Ake metody su pre semafor?

A

init - nastavi hodnotu na cislo
wait - ak je hodnota viac ako nula dekrementuje ju inak sa uspi a caka
signal - ak je rad cakajucich neprazdny tak sa vyberie jeden a zobudi sa, inak inkrementuje cislo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
49
Q

Obsahuje aj semafor kriticku oblast?

A

Ano, napr to inkrementovanie

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
50
Q

Co teda potrebujeme pre implementaciu semaforu aby sme sa zbavili kritickej oblasti?

A

synchronizacny mechanizmus nizsej urovne

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
51
Q

Ako vieme implementovat uspanie a zobudenie procesu?

A

Signalmi

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
52
Q

Ake pozname varianty semaforu?

A

Vseobecny semafor

Binarny semafor - mutex

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
53
Q

Ako znie invariant semaforu?

A

pW - pS <= I kde pW je pocet vykonanych write a pS signal, I je hodnota

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
54
Q

Na co vieme vyuzit napr inu hodnotu semaforu ako 1?

A

Ak R procesov vie vyuzivat prostriedok sucasne tak nastavime na R

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
55
Q

Na co nam je semafor s hodnotou 0?

A

Na synchronizaciu poradia. Cakajuci zavola wait, signal zavola predosly az po vykonani a dany co volal wait teda moze bezat

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
56
Q

Co je precedencny graf?

A

Poradie vykonania procesov

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
57
Q

Ake 2 druhy vykonavania pozname?

A

Sekvencne, paralelne

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
58
Q

Na co nam je buffer?

A

Vyrovnava rozne rychlosti zapisu a citania

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
59
Q

Kedy v bufferi potrebujeme synchronizaciu?

A

ak chce niekto zapisat a je plno, alebo chce citat a je prazdno

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
60
Q

Co je kruhovy buffer?

A

Efektivne znovupouzitie uvolneneho miesta v bufferi

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
61
Q

Ako sa da vyriesit problem obedujucich filozofov?

A

Filozof moze jest len ak jeho sused neje
kazdy filozof ma stav thinking/hungry/eating
pred zacatim jedla caka na semafor ktory indikuje ci su obe vidlicky volne

62
Q

Co je problem readers/writers?

A

K spolocnemu prostriedku v pamati ma pristup viac procesov citajucich/zapisujuceho

63
Q

Co vylucuje pritomnost zapisujuceho procesu?

A

Vsetky ostatne procesy

64
Q

Co vylucuje pritomnost citajuceho procesu?

A

Pritomnost zapisujuceho ale nie dalsich citajucich

65
Q

Pozri si slide 55 v 3. prednaske na riesenie readers/writers

A

55 3

66
Q

Co su podmienene premenne?

A

Umoznuju procesu ktory zamkol zamok cakat, pricom tento zamok bude pocas cakania uvolneny a ked sa proces zobudi tak bude opat zamknuty

67
Q

Co je FUTEX?

A

Fast Userspace Mutex

cakanie na zmenu hodnoty na danej adrese - implementacia zamkov a semaforov

68
Q

Cim je rychly futex?

A

Ak je zamok volny, systemove volanie nie je potrebne

69
Q

Co je FUTEX_WAIT?

A

Ak sa hodnota na adrese uaddr rovna val volajuci proces sa uspi

70
Q

Co je FUTEX_WAKE?

A

Zobudi najviac val procesov cakajucich na adresu uaddr

71
Q

Ake pozname standardy IPC?

A

System V a POSIX

72
Q

Porovnaj System V a POSIX?

A

System V - starsi, dostupny takmer na kazdom systeme, ale zlozitejsi
POSIX - novsi, threadsafe, jednoduchsie rozhranie, nema ale podporu vsade

73
Q

Ake systemove volania pre semafory mame v System V?

A

semget, semop, struct sembuf

74
Q

Ake systemove volania mame pre semafory v POSIX?

A

sem_open, sem_close, sem_unlink, sem_init, sem_destroy…

75
Q

Co robi volanie v System V shmget(key_t key, …)?

A

Vrati ID noveho alebo existujuceho segmentu zdielanej pamate s danym klucom

76
Q

Na com je zalozena POSIXova implementacia zdielanej pamate shm_open a shm_unlink?

A

Na mmap

77
Q

Ake volania ma System V pre spravy?

A

msgget, msgsnd, msgrcv…

78
Q

Ake volania ma POSIX pre spravy?

A

mq_open, mq_send, mq_receive…

79
Q

Pri zasielani sprav ake su 2 hlavne funkcie?

A

send a receive

80
Q

Zdroj spravy nemusi byt jasny, potom sa oznacuje ___

A

ANY

81
Q

Ciel spravy moze zodpovedat viacerym, oznacuje sa potom _____

A

Broadcast

82
Q

Komunikacia moze byt ____ alebo ____

A

Priama - adresa je konkretneho procesu

Nepriama - adresa specifikuje miesto na ktore budu spravy ukladane a z ktoreho budu citane

83
Q

Cez co komunikuje nepriama komunikacia?

A

Cez schranky

84
Q

Kde su uchovane spravy ktore boli odoslane ale neboli este prijate?

A

v OS

85
Q

Ako funguje producent-konzument pomocou priamej komunikacie?

A

Konzument posle producentovi tolko prazdnych sprav kolko moze on sam prijat
Producent ked ma ready spravu, prijme prazdnu a posle data

86
Q

Ako funguje producent-konzument pomocou schranok?

A

Obaja si vytvoria schranky pre N sprav, producent posiela do schranok konzumenta, ten posiela prazdne producentovi

87
Q

Co je blokujuce prijimanie?

A

Ak operacia prijimania predchadza vyslaniu spravy ktora ma byt prijata, zostane zablokovana

88
Q

Co je blokujuce vysielanie?

A

Operacia vysielania zablokuje volajuci proces az kym prijimajuci nezavola zodpovedajucu operaciu receive

89
Q

Kedy sa vrati neblokujuca operacia?

A

Hned

90
Q

Ake su problemy zasielania sprav?

A

Velkost, konverzia (little endian big endian), poradie, spolahlivost, autentifikacia a pod.

91
Q

Co je to soket?

A

Koncovy bod komunikacie, pouziva sa na nom read, write, close

92
Q

Co je domena soketu?

A

AF_UNIX, AF_INET, AF_INET6…

93
Q

Co je typ soketu?

A

SOCK_DGRAM, SOCK_STREAM…

94
Q

Akym volanim vieme zviazat soket s lokalnou adresou a portom?

A

bind

95
Q

Na strane servera ako vieme prepnut soket na cakanie na spojenia?

A

listen

96
Q

ako vieme prijat prichadzajuce spojenie?

A

accept

97
Q

Ako prebieha accept?

A

Caka kym nepride spojenie (zablokovane). Vrati deskriptov na novy socket, z ktoreho vieme citat a zapisovat tam. Povodny soket ostane nezmeneny. Bezne sa po accept robi fork

98
Q

Akym volanim vie klient nadviazat spojenie so serverom?

A

connect

99
Q

Pre datagramy ake volania pouzivame namiesto read a write?

A

send, recv,…

100
Q

Ako vieme ukoncit spojenie?

A

shutdown - citanie a zapis

close - zrusenie soketu

101
Q

Co robi volanie htonl?

A

converts the unsigned integer hostlong from host byte order to network byte order

102
Q

Kde musime robit bind, na akej strane?

A

iba na serveri, na klientovi netreba

103
Q

Co je signal?

A

Asynchronne dorucena informacia o tom ze nastala nejaka udalost, podobaju sa preruseniam

104
Q

Kto typicky posiela signaly komu?

A

Jeden proces druhemu

105
Q

Cim sa rozlisuju signaly?

A

cislom

106
Q

Co vykona signal po jeho doruceni?

A

co ma dany proces nastavene ako handler pre dany signal

107
Q

Akym volanim zasielam signal?

A

kill

108
Q

Ako vie proces alebo vlakno poslat signal sam sebe?

A

raise

109
Q

Ako vieme nastavit ake signaly maju byt blokovane?

A

signal maskou

110
Q

Ake signaly nemozu byt blokovane?

A

SIGKILL a SIGSTOP

111
Q

Co sa stane so signalom ktory je blokovany?

A

Je pridany do radu signalov cakajucich na oblsuzenie

112
Q

Moze prist signal aj ked proces vykonava systemove volanie?

A

Ano ale moze to byt prerusene a nastat chyba alebo sa skusi znova

113
Q

Ake pozname napr signaly generovane jadrom?

A
SIGSEGV - segment violation (pristup na zlu adresu)
SIGILL - illegal instruction
SIGBUS - bus error
SIGFPE - floating point exception
...
114
Q

Ake su zakladne akcie procesu na signal?

A
terminate
ignore
core - ukoncenie a vytvorenie suboru s obrazom pamate
stop - do stavu T
continue
115
Q

Akym volanim vieme nastavit vlastnu rutinu obsluhy signalu?

A

sigaction

116
Q

Aka musi byt obsluzna funkcia signalu?

A

Reentrantna

117
Q

Co hovori siginfo_t?

A

preco ten signal prisiel, teda signal cislo, kod, PID odosielatela a pod

118
Q

Ako vieme vylistovat zoznam signalov?

A

kill -l

119
Q

Na co sa hlavne pouzivaju signaly?

A

Na synchronizaciu procesov

120
Q

Co robi funkcia alarm?

A

volajuci proces dostane signal SIGALRM po uplynuti zadaneho casu

121
Q

Co robi signal USR1 pre prikaz dd?

A

Vypise statistiky na stderr a pokracuje

122
Q

Co robi prikaz HUP pre demon sshd?

A

Znovu nacita svoj konfiguracny subor

123
Q

Aka je to blokujuca operacia?

A

Po zavolani sa nevrati ak nie je ukoncena, napr I/O, disk a pod

124
Q

Aka je to neblokujuca operacia?

A

Ak pozadovanu operaciu nie je mozne vykonat, vrati chybovy kod alebo pokracuje dalej

125
Q

Co sa da spravit s chybnym vykonanim neblokujucej operacie?

A

mozeme ju zopakovat neskor, ale idealne az ked budu pripravene data

126
Q

Ake je riesenie blokujucich operacii?

A

Viacvlaknove procesy, komunikujuce vlakno moze byt blocked kym nepridu data, ostatne mozu pracovat

127
Q

Ake to su asynchronne operacie?

A

Ich vykonanie nie je zavisle od vykonania inych operacii

128
Q

Ake implementacne naroky kladieme na asynchronne operacie?

A

reentrantnost

129
Q

Co napr su asynchronne operacie?

A

obsluzne rutiny vynimiek, signalov a pod

130
Q

Ako vieme ci je operacia asynchronna?

A

Zavisi to od sposobu pouzitia, nie od implementacie

131
Q

Co je to reentrantnost?

A

funkcia moze byt pocas vykonavania zavolana znova bez ovplyvnenia korektnosti vysledkov, teda moze byt bez nasledkov spustitelna viackrat, v ramci toho isteho kontextu

132
Q

Co je to thread-safety?

A

Funkcia moze byt vykonavana subezne viacerymi vlaknami bez ovplyvnenia spravnosti vysledkov, teda v roznych kontextoch

133
Q

Ako vieme zabezpecit vlastnost thread-safety?

A

doplnenim synchronizacnych mechanizmov pri pristupe k spolocnym datam

134
Q

Co treba spravit pre zabezpecenie reentrantnosti?

A

zmenit implementaciu ale aj rozhranie

135
Q

Aka poziadavka je silnejsia, reentrantnost alebo thread-safety?

A

reentrantnost, reentrantnost implikuje thread-safety

136
Q

Akych je 5 poziadaviek pre reentrantnost?

A
  1. neobsahuje globalne nekonstatne data
  2. nevracia pointer na staticke nekonstantne data
  3. pracuje len s datami volajuceho
    4: neblokuje pristup k jedinecnemu zdroju
  4. nevola ina nereentrantne funkcie
137
Q

Vieme pouzit v reentrantnej funkcii malloc/free?

A

Nie

138
Q

Co je to datovod/pipe?

A

Jednosmerny kanal medzi 2 procesmi

139
Q

Ako su reprezentovane konce pipe?

A

Ako deskriptory suborov

140
Q

Co spravi volanie pipe()?

A

Alokuje buffer v jadre a vrati deskriptory

141
Q

Ako sa zapisuje a cita z datovodov?

A

write, read

142
Q

Su datovody pomenovane?

A

Nie, su anonymne

143
Q

Ako vieme spravit pomenovany datovod?

A

mkfifo()

144
Q

Ako sa pouziva pipe?

A

Vytvori sa kopia procesu a oba zatvoria jeden pre nich nepotrebny koniec pipe (proces ktory bude citat zatvori pisaci koniec a naopak)

145
Q

Co znamena signal SIGPIPE?

A

zapis do datovodu kde nie je otvoreny citaci koniec

146
Q

Co vrati citanie z pipe so zatvorenym zapisovacim koncom?

A

EOF

147
Q

ake cisla ma STDIN,STDOUT, STDERR?

A

0 - in
1 - out
2 - err

148
Q

Co robi volanie dup(int old)?

A

skopiruje dany deskriptor na prvy volny a vrati jeho cislo

149
Q

co robi volanie dup2(int old, int new)?

A

skopiruje desc old na new, ak new nebol volny tak ho naprv zatvori

150
Q

Na co vyuzivame teda dup?

A

Najprv zavrieme napr stdout, dame dup na nejaky pipe a spravime z pipe stdout