source

사용 중인 waitpid()의 예?

nicesource 2023. 10. 31. 22:23
반응형

사용 중인 waitpid()의 예?

나는 그것을 알고 있습니다.waitpid()프로세스가 완료될 때까지 기다리는데 정확히 어떻게 사용합니까?

여기서 제가 하고 싶은 것은 두 아이를 만들어서 첫 번째 아이가 끝날 때까지 기다렸다가 두 번째 아이를 죽이고 나가는 것입니다.

//Create two children
pid_t child1;
pid_t child2;
child1 = fork();

//wait for child1 to finish, then kill child2
waitpid() ... child1 {
kill(child2) }

구문waitpid():

pid_t waitpid(pid_t pid, int *status, int options);

의 가치.pid다음이 될 수 있습니다.

  • < -1: 프로세스 그룹 ID가 다음의 절대값과 같은 자식 프로세스를 기다립니다.pid.
  • -1: 자식 프로세스를 기다립니다.
  • 0: 프로세스 그룹 ID가 호출 프로세스 ID와 동일한 자식 프로세스를 기다립니다.
  • > 0: 프로세스 ID가 다음의 값과 같은 자식을 기다립니다.pid.

옵션 값은 OR이 0이거나 다음 상수 이상입니다.

  • WNOHANG: 종료된 어린이가 없을 경우 즉시 반환합니다.
  • WUNTRACED: 자식이 정지한 경우에도 반환합니다.이 옵션을 지정하지 않더라도 중지된 추적된 자식에 대한 상태가 제공됩니다.
  • WCONTINUED: 또한 배달을 통해 중단된 자식이 다시 시작된 경우 반환SIGCONT.

자세한 도움말을 보려면 다음을 사용합니다.man waitpid.

구문은

pid_t waitpid(pid_t pid, int *statusPtr, int options);

1. 여기서 pid는 아이가 기다려야 하는 과정입니다.

2.statusPtr은 종료 프로세스의 상태 정보를 저장할 위치를 나타내는 포인터입니다.

3. waitpid 기능에 대한 옵션 작업을 specifies합니다.다음 옵션 플래그 중 하나를 지정하거나 비트 단위 포함 OR 연산자와 결합할 수 있습니다.

WHANG 추적 안 함 계속됨

성공한 경우 waitpid는 상태가 보고된 종료된 프로세스의 프로세스 ID를 반환합니다.실패하면 -1이 반환됩니다.

기다리는 것보다 좋은 일

1. Waitpid는 프로세스에 대한 자식이 둘 이상 있고 부모가 다시 시작하기 전에 특정 자식이 실행될 때까지 기다리려는 경우에 사용할 수 있습니다.

2. waitpid는 작업 제어를 지원합니다.

3.it 은 상위 프로세스의 비차단을 지원합니다.

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>

int main (){
    int pid;
    int status;

    printf("Parent: %d\n", getpid());

    pid = fork();
    if (pid == 0){
        printf("Child %d\n", getpid());
        sleep(2);
        exit(EXIT_SUCCESS);
    }

//Comment from here to...
    //Parent waits process pid (child)
    waitpid(pid, &status, 0);
    //Option is 0 since I check it later

    if (WIFSIGNALED(status)){
        printf("Error\n");
    }
    else if (WEXITSTATUS(status)){
        printf("Exited Normally\n");
    }
//To Here and see the difference
    printf("Parent: %d\n", getpid());

    return 0;
}

언급URL : https://stackoverflow.com/questions/21248840/example-of-waitpid-in-use

반응형