C 프로그램 설정 -> 1) - 하나의 하위 프로세스를 포크 한 다음 해당 forked 프로세스에서 execl을 실행하는 부모 프로세스가 다른 프로그램을 실행합니다. 분기 된 프로그램은 while (1)에 있으므로 항상 실행 중입니다. 2) - 나는 부모 과정에서 waitpid를 했으니 아이가 죽으면 내가 알게 될 것이다. 3) - 이제 부모가 죽으면 어떻게 될까요? 나는 여전히 그 갈래의 과정을 모니터하고 싶다. 그러나 부모가 죽으면 fork 된 프로세스가 init에 의해 소유됩니다. 따라서 init (process id = 1)은 자식 프로세스의 새로운 부모가됩니다. 하지만 몇 가지 이유로 나는 아직도 다른 프로그램을 통해 내 아이 프로세스와 다시 연결하려고합니다. 할 수 있을까요?리눅스의 프로세스에 다시 연결
답변
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.)
응답 해 주셔서 감사합니다 –
@utkarshkatiyar 도움이된다면 답을 표시해주세요. – D3Hunter
죄송합니다. 당신의 대답이 나를 도와주지 않습니다. 그러나 오히려 그것은 다른면을 알게 도와주었습니다. 그래서 저는 그것을 답으로 표시 할 것입니다. –
- 1. 프로세스에 대한 리눅스의 뮤텍스
- 2. nodejs를 통해 스폰 된 프로세스에 다시 연결
- 3. 리눅스의 가상 TCP 연결
- 4. VS2012의 win8 프로세스에 연결
- 5. 기존 Outlook 프로세스에 연결
- 6. TCL 기존 프로세스에 연결
- 7. Visual Studio - 프로세스에 연결
- 8. 2012 년 프로세스에 연결
- 9. Zend로 SQL 프로세스에 연결
- 10. php에서 windows 프로세스에 연결
- 11. 기존 프로세스에 연결
- 12. Eclipse 빌드 프로세스에 연결?
- 13. ADT가있는 Eclipse를 사용하여 Android에서 디버그 프로세스에 다시 연결
- 14. Python : wx.py.shell.Shell을 별도의 프로세스에 연결
- 15. Emacs Gdb : 시작시 프로세스에 연결
- 16. gdb가 정지하지 않고 프로세스에 연결
- 17. Visual Studio에서 "프로세스에 연결"디버깅 DLL 자동화?
- 18. 리눅스의 특정 공유 라이브러리 버전과의 연결
- 19. ARM 리눅스의 ELF oddities 및 동적 연결
- 20. 하나의 파일을 리눅스의 다른 파일에 연결
- 21. (iPhone) 장비는 "프로세스에 연결"할 수 없습니다
- 22. 상태를 모니터링하기 위해 실행중인 프로세스에 연결
- 23. lldb/gdb를 수명이 짧은 프로세스에 연결 하시겠습니까?
- 24. 아직 시작되지 않은 프로세스에 gdb를 사용하여 연결
- 25. Visual Studio 2008에서 디버그 -> 프로세스에 연결?
- 26. Visual Studio 2010 Python 프로세스에 연결
- 27. 프로세스에 연결 - Visual Studio 2010 - windows 2008
- 28. cycript/substrate는 프로세스에 어떻게 연결 되나요?
- 29. 페이지에서 벗어난 후 하위 프로세스에 연결
- 30. Visual Studio : 디버그를 구성하여 프로세스에 연결
그것은이 경우 실제로 고아 과정입니다. 그러나 질문은 동일하게 유지됩니다. 고아의 과정에 다시 붙일 수 있을까요? –
새 프로세스에서 다시 waitpid()를 수행하면 어떻게됩니까? 하위 프로세스를 원래 부모 프로세스의 파일로 저장해야합니다. –
나는 똑같이했다. 그 과정의 pid를 저장하고 다시 waitpid. 그러나 불행히도 waitpid는 부모 프로세스에 의해 자식 프로세스에만 호출 될 수 있고 고아 프로세스 init (pid = 1)의 경우에는 부모 프로세스가되어 이제는 waitpid가 오류 메시지를 표시합니다. pid –