Linux C 프로 세 스 와 다 중 스 레 드 입문 - (2) 프로 세 스 대기
3045 단어 linux
문제.
프로 세 스 를 만 드 는 이 절 내용 에서 메시지 의 출력 은 부자 프로 세 스 가 출력 을 교체 하고 부모 프로 세 스 가 하위 프로 세 스 전에 끝 나 는 것 을 보 았 습 니 다.부모 프로 세 스 를 하위 프로 세 스 가 끝 난 후에 끝 내 려 면wait 함 수 를 호출 할 수 있 습 니 다.
함수 설명
pid_t wait(int * stat_loc)
포 함 된 헤더 파일: \ # include < sys / types. h >
#include
반환 값: 하위 프로 세 스 의 PID
파라미터: statloc 는 빈 포인터 가 아 닙 니 다. 상태 정 보 는 가리 키 는 위치 에 기 록 됩 니 다.
sys / wait. h 파일 사랑 하 는 상태 정 보 는 다음 표 참조:
-----------------------------------------------------------------------------------------------------------------
매크로 정의 설명 하 다.
-----------------------------------------------------------------------------------------------------------------
WIFEXITED(stat_val) 하위 프로 세 스 가 정상적으로 끝나 면 0 이 아 닌 값 을 가 져 옵 니 다.
WEXITSTATUS(stat_val) WIFEXITED 가 0 이 아니라면 하위 프로 세 스 의 종료 코드 를 되 돌려 줍 니 다.
WIFSIGNALED(stat_val) 하위 프로 세 스 가 캡 처 되 지 않 은 신호 로 종료 되면 0 이 아 닌 값 을 가 져 옵 니 다.
WTERMSIG(stat_val) WIFSIGNALLED 가 0 이 아니라면 신호 코드 를 되 돌려 줍 니 다.
WIFSTOPPED(stat_val) 하위 프로 세 스 가 종료 되면 0 이 아 닌 값 을 가 져 옵 니 다.
WSTOPSIG(stat_val) WIFSTOPPED 가 0 이 아니라면 신호 코드 를 되 돌려 줍 니 다.
-----------------------------------------------------------------------------------------------------------------
wait 시스템 호출 은 하위 프로 세 스 가 끝 날 때 까지 부모 프로 세 스 를 일시 정지 시 킵 니 다.
코드 인 스 턴 스
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
int main(){
pid_t pid;
char * message;
int n;
int exit_code;
printf("fork program starting
");
pid = fork();
switch(pid){
case -1:
perror("fork failed");
exit(1);
case 0:
message ="This is the child";
n = 5;
/* */
exit_code = 37;
break;
default:
message = "This is the parent";
n = 3;
/* */
exit_code = 0;
break;
}
/*pid 0, */
if(pid){
int stat_val;
pid_t child_pid;
/* */
child_pid = wait(&stat_val);
printf("Child process has finished: PID=%d
",child_pid);
if(WIFEXITED(stat_val))
/* , , exit_code=37*/
printf("Child exited with code %d
", WEXITSTATUS(stat_val));
else
/* */
printf("Child terminated abnormally
");
}
for(; n > 0; n--){
puts(message);
sleep(1);
}
exit(exit_code);
}
부모 프로 세 스 는 wait 시스템 호출 을 통 해 하위 프로 세 스 의 상태 정보 가 나타 날 때 까지 실행 을 중단 합 니 다. 이것 은 하위 프로 세 스 가 exit 를 호출 할 때 발생 합 니 다. 종료 코드 를 37 로 설정 합 니 다.
그 다음 에 부모 프로 세 스 가 계속 실 행 됩 니 다. wait 호출 된 반환 값 을 테스트 하여 하위 프로 세 스 가 정상적으로 끝 났 는 지 확인 하고 상태 정보 에서 하위 프로 세 스 의 종료 코드 를 추출 합 니 다.
실행 효 과 는 다음 그림 참조:
참고 문헌: Linux 프로 그래 밍
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.