如果我上運行host1
外殼和我做ssh host2 some-command
,然後我關閉終端窗口(或以其他方式殺死host1
的ssh
過程)似乎對host2
的sshd
進程終止很及時。但是... some-command
發生了什麼?根據它的命令,它有時會終止,但有時不會。 some-command
接收哪些信號?什麼文件描述符(如果有的話)被操縱,以及如何?進程在其父進程sshd終止時發生了什麼?
3
A
回答
3
它沒有收到任何信號。如果它們沒有以某種方式重定向,則三個標準IO流是來自ssh進程的管道,因此從stdin讀取將返回EOF,寫入stdout或stderr將失敗並引發SIGPIPE。如果某些命令沒有在標準流上執行I/O操作,它將沒有理由提前終止。
0
相關問題
- 1. 後臺進程在其父進程終止時被終止?
- 2. 父進程在C#中終止時如何終止子進程
- 3. 殭屍進程的父節點終止後會發生什麼?
- 4. 父進程終止子進程的輸出是什麼?
- 5. 當我們在Unix中終止一個進程時實際發生了什麼?
- 6. 當一個進程/任務被終止時會發生什麼
- 7. 父母或其他進程終止進程
- 8. 父進程在Linux中被終止後爲什麼子進程還活着?
- 9. Python多重處理:父進程終止時終止守護進程的更好實現是什麼?
- 10. 是生存進程終止
- 11. 當子進程終止時瞭解SIGCHLD
- 12. 如何避免父進程終止在Python中的進程終止
- 13. 父進程等到子進程終止時,子進程如何才能殺死父進程?
- 14. Python:在創建子進程後終止父進程
- 15. 在C中終止子進程後,父進程未完成
- 16. 在Ctrl-C上終止父進程和子進程
- 17. 當線程c發生異常時進程沒有終止#
- 18. Apache Ant:螞蟻進程終止時終止進程<exec>
- 19. 超時後,終止進程及其所有子進程
- 20. 每個父進程不允許在其子進程之前終止
- 21. 線程在其父進程停止時是否會停止
- 22. nohup進程終止時觸發腳本
- 23. 多進程守護進程不會終止在父進程退出
- 24. 停止主管進程而不會終止其他子進程
- 25. 創建過多的進程,似乎只能終止父進程
- 26. 如何啓動分離進程並等待父進程終止?
- 27. 所有子進程終止後,無法運行父進程。
- 28. 如何從命令提示符中終止進程及其父進程
- 29. 線程內線程:如果父線程被終止會發生什麼?
- 30. 進程不終止
你確定嗎? 'ssh'可能會創建一個終端,又名僞tty(取決於選項),如果有的話,我希望其他進程爲其tty控制終端接收'SIGHUP'。 –
啊哈,但那是關鍵。 'ssh somehost some-command' does * not * allocate a pty!它只是一個管道。你必須用'-t'來請求一個pty。因此,我所看到的導致我問這個問題的行爲(我的工作沒有收到任何信號,只是他們的標準輸入關閉)是合理的。 – Glyph