2016-06-30 8 views
0

정상적으로 또는 exit() 함수를 호출 할 때만 출력을 생성하는 프로그램이 있습니다 (gcov을 사용하려고합니다. C 프로그램). 특수 입력에서 무한 루프에 프로그램이 멈추어 터미네이션 신호를 보내 종료해야합니다. 이 상황에서는 exit()을 호출하지 않기 때문에 필요한 출력을 생성하지 않습니다.exit()를 호출하여 종료하게하는 프로세스에 신호를 보내는 방법

실행중인 프로그램이 exit()을 호출하고 소스 코드를 건드리지 않고 신호 처리기를 작성하지 않고 종료 할 수있는 방법이 있습니까?

+3

디버거로 첨부하고'exit()'를 호출하도록 지시하십시오. – Barmar

+1

기본 동작이'exit()'를 호출하는 신호가 없습니다. 신호가 무시되거나 프로세스를 즉시 종료하거나 프로세스를 일시 중단하는 것과 같은 특수한 조치를 수행합니다. – Barmar

+0

공유 라이브러리가 제공하고 프로그램에서 사용하는 함수를 대체 할 수 있습니다. 'LD_PRELOAD'를 사용하여 대체 함수를로드하면 조건을 확인하고'exit()'를 호출 할 수 있습니다. 그렇지 않으면 원래 함수를 호출 할 가능성이 높습니다. 여기서 'LD_PRELOAD'에 대한 자세한 내용은 다음과 같습니다 : http://stackoverflow.com/questions/426230/what-is-the-ld-preload-trick 이것은 대체 된 함수가 프로그램을 차단하는 로직에서 호출된다는 의미입니다. – alk

답변

0

의견에서 제안한대로 gdb 내 프로그램을 실행하고 신호를받은 후 수동으로 exit()으로 전화하여 매력적으로 작동했습니다.