>
a »
?
ls
všechny složky ve vašem domovkém adresáři a pomocí programu grep
nalezněte všechny, které začínají na písmeno D.
ls
na vstup programu grep
?
Roura (pipe) slouží k propojení výstupu jednoho procesu na vstup druhého procesu, např. ls -l | wc -l
.
Roury se dělí na dvé katagorie, nepojmenované a pojmenované.
Nepojmenované roury jsou typicky UNIXové roury s |
.
Roury využívají zápis a čtení ze souboru s vlastním souborovým deskriptorem.
Vyzkoušejte následující příkazy v terminálu:
ls -l ~ | grep Do
echo “Hello World” | tr “[A-Z]” “[a-z]”
Pojmenovaná roura, implementovaná jako fronta FIFO, je využívaná ke komunikaci mezi nepříbuznými programy.
Pojmenovaná roura se vytvoří pomocí příkazu mkfifo <pipe name>
.
mkfifo /tmp/my_pipe.pipeVýstup programu
ls -l
zapište do roury a do souboru
ls -l > /tmp/my_pipe.pipe ls -l > /tmp/output.txtObsah souboru i roury můžeme číst pomocí programu
cat
cat < /tmp/my_pipe.pipe
output.txt
a pojmenované roury?
Seznamte se s přiloženým programem pro zobrazení signálu využivající knihovny OTK a generátorem signálu sgen
, které naleznete v adresáři signal_viewer
.
Program sgen
je jednoduchý pseudonáhodný generátor EKG signálu, který vypisuje hodnoty signálu na stdout
případně do souboru jeli spuštěn jako ./sgen -f vystupni_soubor.dat
. Nápovědu k použití programu vyvoláte ./sgen -h
.
Program tsignal_viewer.c
načítá hodnoty ze stdin
případně ze zadaného souboru a vykreslí signál po částech do grafického okna OTK, například jako ./sgen | ./tsignal_viewer
Knihovna OTK je přiložena v adresáři otk_lib
. Jedná se o relativně jednouduchou standalone zobrazovací knihovnu založenou na OpenGL. Její použití je zapouzdřeno v modulu xwin_otk_plot
s rozhraním
void xwin_init(void); void xwin_close(); void xwin_set_plot(int xrange, float ymin, float ymax); void xwin_redraw_plot(int n, const float *ticks, const float *values); void xwin_redraw(void);
Příklad použití je dále demonstrován v tsignal_viewer.c
.
Module xwin_otk_plot
využivá periodického signálu pro aktualizaci počtu vykreslených snímků za sekund v pravém horním rohu okna. Aktualizace zobrazení je realizována funkcí xwin_redraw()
. V příkladu je dále demonstrována obsluha stiknutí tlačítka Exit
prostřednictvím callback funkce quit()
.
xwin_otk_plot
využijete v úloze HW 9 - Vícevláknová aplikace s meziprocesovou komunikací, nicméně pro splění úlohy není nutné využívat periodické signály nebo callback funkce. Naopak je vhodné využít více-vláknového programu a realizovat vykreslování plně synchronně.
otk_lib
a program tsignal_viewer
.
tsignal_viewer
a používáním funkcí xwin_otk_plot
.
xwin_set_plot(max_len, min - 0.5, max + 0.5);
.