GNU/Linux >> Znalost Linux >  >> Linux

Proč tento plášťový ropovod vystupuje?

Potrubí funguje připojením výstupu jednoho procesu A ke vstupu B. Spojení může být přerušeno, když

  • A zavře svůj výstup. B získá EOF.
  • B zavře svůj vstup. A dostane chybu, že výstup již není dostupný, když se pokusí zapsat další bajt.

Protože jsou tyto dva případy tak běžné, bylo zpracování přesunuto do standardní knihovny C.


head zavře vstupní soubor po načtení požadovaného množství. když je roura uzavřena z jedné strany, druhá strana dostane chyby zápisu; to způsobí base64 zavřít, což zase způsobí cat zavřít.


Po base64 výstup 10 bajtů, head dostane dostatek vstupů a výstupů. Když se první pokusí odeslat více bajtů, přijme signál SIGPIPE a tím také skončí。Ze stejného důvodu cat se postupně ukončí.


Linux
  1. Proč substituce příkazů Shell pohltí znak na konci nového řádku?

  2. Proč „ls“ vyžaduje samostatný proces pro provedení?

  3. Bash:Proč se nadřazený skript neukončí na SIGINT, když podřízený skript zachytí SIGINT?

  1. Proč popen() vyvolá shell k provedení procesu?

  2. Proč se Ctrl + V nevloží do Bash (Linux shell)?

  3. Proč uživatel 'bin' potřebuje přihlašovací shell?

  1. Proč Bashrc kontroluje, zda je aktuální shell interaktivní?

  2. Proč možnost Ssh -t přidává Cr &Lf do přesměrovaného výstupu?

  3. Co tento výstup z Xev znamená?