GNU/Linux >> Znalost Linux >  >> Linux

Jak signalizovat konec vstupu Stdin?

  1. 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?
  2. 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é.


Linux
  1. Jak používat příkaz basename?

  2. Jak zajistit, aby Iconv nahradil vstupní soubor převedeným výstupem?

  3. Jak přidat nový řádek na konec souboru?

  1. Jak otočit obrazovku na Raspberry Pi 3

  2. Jak nainstalovat aplikaci Signal Messaging na nejnovější Ubuntu

  3. Jak zkontrolovat HZ v terminálu?

  1. Jak zkontrolovat, zda je potrubí prázdné, a spustit příkaz na datech, pokud není?

  2. Jak nainstalovat R 3.3.1 do vlastního adresáře?

  3. Jak extrahuji obsah rpm?