Dobodz ötödik gyakorlata
- STDIN
- STDOUT
- C
- BASH
- TERMINAL
- SHELL
- Linux System call
int fd = open("...")ls | wc -lls > a.txt
Bash-Terminal-Shell különbség
- A Bash az egy fajta shell
Linux System Call
- Minden az operációs rendszer felé irányult kérés
Terminal
- Egy command prompt
- A terminál a shell i/o-ját valósítja meg
Stdin/Stdout
- Standard input, standard output
Pipe
- egy standard out-ot és egy standard in-t összeköt
Mai óra: Pipe
Pipe
Program indításkor létrejön a /proc/<pid> mappa
FD: File Descriptor - egy szám
Minden alkalmazás by default kap fd-ket
- 0: stdin
- 1: stdout
- 2: stderr
Pipe: a | b
- elindítja
a-t ésb-t - az
a1-es file descriptorát belevezeti ab0-s file descriptorába
Hozzunk magunk létre pipeot
mkfifo
Warning
Meg kell nyitni mindkét oldalát, hogy tovább menjen!
( echo "5 hello" 1>&9 ) 9>&1 > cat
Meg lehet adni, hogy melyik pipe-ból melyik pipe-ba akarjuk rakni az elemeket
5 hello az első fd-ből a 9.-be, majd a 9.-ből az elsőbe a cat felé
tee
Az adatfolyamot ki tudja írni egy fileban
pl
echo "asd" | tee a.txt | cat
kiírja, hogy "asd" és beleírja az a.txt fileba is
pipe()
C-ben tudunk létrehozni pipe-ot. Kapunk fd-t, amit pl. a forkolt gyerekkel együtt tudunk használni.
Probléma: Hogyan szinkronizáljuk az írást és az olvasást???
következő óra: poll