我下面的C程序設置 - > 1) - 我的父進程分叉了一個子進程,然後execl在分叉進程運行另一個程序。分叉程序在while(1)中,所以它始終運行。 2) - 我在父母的過程中完成了waitpid,所以如果孩子死了,我會知道的。 3) - 現在如果父母自己死了呢?我仍然想要監視那個分叉進程。但是,當我的父母死於分叉進程屬於init的時候。所以init(進程id = 1)成爲子進程的新父進程。但出於某些原因,我仍然希望通過其他程序重新與我的子進程重新連接。我可以做嗎?重新連接到Linux中的進程
0
A
回答
0
您可以使用ptrace
和PTRACE_ATTACH
,然後您可以爲該過程執行waitpid。請查詢man ptrace
和this瞭解更多信息。
下面是ptrace的手冊頁的:
The ptrace() system call provides a means by which one process (the "tracer") may observe and control the execution of another process (the
"tracee"), and examine and change the tracee's memory and registers. It is primarily used to implement breakpoint debugging and system
call tracing.
......
PTRACE_ATTACH
Attach to the process specified in pid, making it a tracee of the calling process. The tracee is sent a SIGSTOP, but will not nec‐
essarily have stopped by the completion of this call; use waitpid(2) to wait for the tracee to stop. See the "Attaching and detach‐
ing" subsection for additional information. (addr and data are ignored.)
+0
感謝您回答 – 2014-12-08 06:28:34
+0
@utkarshkatiyar如果有幫助,請標記爲答案。 – D3Hunter 2014-12-08 13:27:07
+0
對不起。你的回答對我沒有幫助。但是,它幫助我瞭解了另一個方面,因此我將其標記爲答案。 – 2014-12-10 05:21:58
相關問題
- 1. 重新連接到QT中的孤立進程
- 2. 重新連接運行的守護進程到標準輸出
- 3. 以編程方式在Linux中斷開並重新連接ttyUSB0
- 4. Asterisk:重新連接到遠程mySQL?
- 5. 重新連接到MySQL連接超時
- 6. 無法重新連接到ODBC連接
- 7. SocketException:重新連接後重新連接
- 8. 重新啓動進程腳本linux
- 9. SQLAlchemy重新連接到db
- 10. 重新連接到新的SVN倉庫
- 11. GDB當連接到進程
- 12. 如何連接到進程
- 13. 使用Microsoft Visual Studio連接到Linux進程?
- 14. 連接到用PHP(Linux)的
- 15. Linux中連接的進程是哪個端口
- 16. 通過nodejs重新連接產生的進程
- 17. Java 7:線程重用? (斷開連接 - 重新連接)
- 18. 如何在plsql程序中斷開連接並重新連接
- 19. 如何自動重新連接到由gdb內的valgrind控制的進程?
- 20. Python的重新連接到MySQLdb的
- 21. JDBC連接池不能重新連接tomcat中的連接
- 22. 如何在linux中列出連接到共享內存段的進程?
- 23. Silverlight中WCF重新連接
- 24. 使用Eclipse與ADT重新連接到Android上的調試進程
- 25. 自動重新啓動連接到一個wamp服務器的C++進程
- 26. 連接到linux中的POP3S服務器
- 27. Linux中文件更改的重新啓動進程
- 28. 重新連接到休眠的問題
- 29. iOS - 重新使用EAAccessory對象進行重新連接?
- 30. C#編程遠程連接到Linux服務器連接到Amazon RDS數據庫
它實際上在這種情況下,一個孤兒進程。但問題依然如此。我可以再次附上那個孤兒過程嗎? – 2014-12-04 18:36:02
如果您在新進程中再次執行waitpid(),會發生什麼情況?您必須將子pid保存到原始父進程中的文件中。 – 2014-12-04 18:56:35
我也這樣做過。存儲該進程的pid,並再次waitpid。但不幸的是,它也不起作用,因爲waitpid只能通過它的父進程調用子進程,而在孤兒進程的情況下init(pid = 1)已成爲父進程,所以現在waitpid會拋出一個錯誤 - pid – 2014-12-04 19:01:16