- V Bash jsem se dozvěděl, že koncový
signál lze změnit zde
dokumentem. Ale jak mohu ve výchozím nastavení
signalizovat konec vstupu stdin? - Náhodou jsem zjistil, že u cat a
chardet mohou být jejich standardní vstupy
signalizovány jako dokončené pomocí Ctrl+d. Ale
Zdá se mi, že si pamatuji, že Ctrl+d a
Ctrl+c jsou podobné ukončení
provádění spuštěného příkazu. Takže
se mýlím?
Přijatá odpověď:
Ctrl+D , když je napsáno na začátku řádku na terminálu, znamená konec vstupu. Toto není signál v unixovém smyslu:když aplikace čte z terminálu a uživatel stiskne Ctrl+D , aplikace je upozorněna, že byl dosažen konec souboru (stejně jako kdyby četl ze souboru a minul poslední bajt).
Ctrl+C vysílá signál, SIGINT. Ve výchozím nastavení SIGINT (signál přerušení) ukončí aplikaci v popředí, ale aplikace může signál zachytit a reagovat jiným způsobem (například shell sám zachytí signál a přeruší řádek, který jste začali psát, ale ne Když skončíte, zobrazí se nová výzva a čeká se na nový příkazový řádek).
Znaky spojené s koncem souboru a SIGINT můžete změnit pomocí stty
příkaz, např. stty eof a
by bylo a
znak konce souboru a stty intr ^-
by deaktivoval znak SIGINT. To je málokdy užitečné.