Search
Výchozí soubory prga-lab10-sources.zip
>
»
ls
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.
ls -l | wc -l
|
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 <pipe name>
mkfifo /tmp/my_pipe.pipe
ls -l
ls -l > /tmp/my_pipe.pipe ls -l > /tmp/output.txt
cat
cat < /tmp/my_pipe.pipe
output.txt
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.
sgen
signal_viewer
libxmu-dev
apt install libxmu-dev
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.
stdout
./sgen -f vystupni_soubor.dat
./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
tsignal_viewer.c
stdin
./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
otk_lib
xwin_otk_plot
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_redraw()
Exit
quit()
tsignal_viewer
xwin_set_plot(max_len, min - 0.5, max + 0.5);