하위 프로세스를 종료하는 방법 - _hostname vs. exit
다음 코드 조각을 고려하십시오.
pid_t cpid = fork();
if (cpid == -1) {
perror("fork");
exit(EXIT_FAILURE);
}
if (cpid == 0) { // in child
execvp(argv[1], argv + 1);
perror("execvp");
_exit(EXIT_FAILURE);
}
// in parent
집행부가 돌아오면 아동 과정을 어떻게 끝내야 할까?출구()를 사용할 것인가, 아니면 _exit()를 사용할 것인가?
반드시 사용해야 한다._Exit()
.exit()
추가한 기능을 호출하십시오.atexit()
그리고 다음으로 생성된 파일 삭제tmpfile()
부모 과정이란 것이 실제로 존재했을 때 이런 일을 하기를 바라는 것이기 때문에, 당신은 전화를 해야 한다._Exit()
이것들 중 아무 것도 하지 않는 것.
공지_Exit()
대문자 E로_exit(2)
아마 직접 전화하고 싶은 건 아닐 겁니다 exit(3)
그리고_Exit(3)
전화해줄게없으면_Exit(3)
, 그리고 네,_exit()
네가 원했던 거야
포크()의 아이는 항상 _exit()를 불러야 한다.
대신 출구()를 호출하는 것은 보류 중인 stdio 버퍼가 두 번 플러시되도록 하는 좋은 방법이다.
executevp가 성공하면 아이를 종료할 수 있으므로 종료할 필요가 없다.
실행 실패 시 나는 단지 사용한다.exit(EXIT_FAILURE);
어린아이에
편집 : 몇 가지 조사를 한 결과 http://www.unixguide.net/unix/programming/1.1.3.shtml이라는 것을 알게 되었다.
그래서 쓰는 게 더 좋은 것 같다._exit()
특히 당신이 C++:p에 있을 때 포크 아이에게서 나는 당신의 질문 덕분에 무언가를 배웠다.d
원하는 행동에 따라 달라진다.man -s 3 exit
그리고man _exit
시스템에 대한 자세한 내용을 보려면 다음을 수행하십시오.일반적으로 나는 _exit가 atexit()에 등록된 기능을 실행하지 않는 반면에 _exit는 atexit()에 등록된 기능을 실행하지 않는다고 믿는다(이 기능들은 exit를 호출하지 않는 것이 좋다 - 그렇지 않으면 재귀가 된다).
일반적으로 나는 _exit보다 출구를 더 선호한다. _exit에 등록된 기능을 제외하고, 필요하다면 _exit라고 부르고 싶다.
exit()
ANSI-C 함수로 운영체제 독립적이다.모든 ANSI-C 표준 기능을 닫는다. _exit()
에 의해 불려지다exit()
다음과 같은 이유로 운영 체제에 따라 기능을 종료한다.exit()
그들에 대해 전혀 모르고 있어(exit
운영 체제에 독립적임)
참조URL: https://stackoverflow.com/questions/2329640/how-to-exit-a-child-process-exit-vs-exit
'programing' 카테고리의 다른 글
마우스 오른쪽 버튼을 클릭하고 '새로 만들기'를 선택하면 IntelliJ가 '클래스'를 표시하지 않음 (0) | 2022.04.27 |
---|---|
Vue: 루트 요소 컨텐츠 및 컨텐츠 배포 슬롯 (0) | 2022.04.27 |
NuxtJs 경로에서 *(아스터스크)를 사용하는 방법? (0) | 2022.04.27 |
vuex를 사용하여 데이터 업데이트 (0) | 2022.04.27 |
C 매크로는 무엇에 유용한가? (0) | 2022.04.27 |