Z toho, co mohu shromáždit.
Úlohám na pozadí je blokováno čtení terminálu uživatele. Když se o to někdo pokusí, bude pozastaven, dokud jej uživatel nepřenese do popředí a neposkytne nějaký vstup. "čtení z terminálu uživatele" může znamenat buď přímý pokus o čtení z terminálu, nebo změnu nastavení terminálu.
Normálně to je to, co chcete, ale někdy programy čtou z terminálu a/nebo mění nastavení terminálu ne proto, že potřebují uživatelský vstup k pokračování, ale proto, že chtějí zkontrolovat, zda se uživatel pokouší poskytnout vstup.
http://curiousthing.org/sigttin-sigttou-deep-dive-linux má krvavé technické podrobnosti.
 V Linuxu a dalších unixových systémech jde o úlohu, která běží na pozadí, ale stále má své stdin (nebo std::cin ) přidruženému k jeho ovládacímu terminálu (aka oknu, ve kterém byl spuštěn), bude odesláno SIGTTIN signál, který ve výchozím nastavení způsobí úplné zastavení programu, dokud jej uživatel nepřenese do popředí (fg %job nebo podobné), aby bylo možné skutečně zadat vstup programu. Chcete-li se vyhnout pozastavení programu tímto způsobem, můžete:
- Ujistěte se, že programy stdinkanál již není přidružen k terminálu, a to buď přesměrováním do souboru s vhodným obsahem, který má program vložit, nebo na/dev/nullpokud opravdu nepotřebuje vstup - např.myprogram < /dev/null &.
- Po spuštění programu ukončete terminál, což způsobí přidružení k programu stdinJdi pryč. To však způsobíSIGHUPbýt doručen programu (to znamená, že vstupní/výstupní kanál zaznamenal "zaseknutí") – to obvykle způsobí ukončení programu, ale tomu se lze vyhnout použitímnohup- např.nohup myprogram &.
Pokud máte vůbec zájem o zachycení výstupu programu, je to pravděpodobně nejlepší volba, protože zabrání oběma výše uvedeným signálům (a také několika dalším) a uloží výstup, abyste se mohli podívat, zda existují nějaké problémy s prováděním programů:
nohup myprogram < /dev/null > ${HOME}/myprogram.log 2>&1 &
 Ano, opravdu je zastaven a na pozadí již nefunguje. Chcete-li jej vrátit k životu, zadejte fg  job_number