나는 C의 기본 셸에서 작업하고있다. pipes을 구현 한 결과 나는 회선의 명령을 반복 계산하고 반복적으로 fork()
의 새 프로세스를 계산한다.신호 11 segfault on wait() 시스템 호출?
다음 명령으로 진행하기 전에 각 반복의 끝에서 I wait()
을 자식으로 처리하십시오. 이는 이전 코드에서 잘 작동했지만, 어떻게 든 그것을 파괴했습니다
Program terminated with signal 11, Segmentation fault.
#0 0xfef28730 in _waitpid() from /usr/lib/libc.so.1
(gdb) backtrace
#0 0xfef28730 in _waitpid() from /usr/lib/libc.so.1
#1 0xfef28770 in _wait() from /usr/lib/libc.so.1
#2 0xfef696d1 in wait() from /usr/lib/libc.so.1
#3 0x08051428 in main()
나는 아이가 이미 종료 된 경우 wait()
단순히 좀비 프로세스를 얻을 것이라는 점을 이해합니다.
왜, 어떤 경우에 wait()
이 segfault를 발생 시킬까요? 어떻게 이런 종류의 디버깅을 할 수 있습니까?
단일 스레드 응용 프로그램입니까? –