반응형
사용 중인 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
반응형
'source' 카테고리의 다른 글
유휴 상태일 때 MySQL Workbench 연결이 끊어짐 (0) | 2023.10.31 |
---|---|
파이썬에서 XSLT를 사용하여 XML 파일을 변환하는 방법은? (0) | 2023.10.31 |
CREATE 명령이 사용자에게 거부됨 (0) | 2023.10.31 |
mysql은 int를 통화로 선택하거나 통화 형식으로 변환합니까? (0) | 2023.10.31 |
Powershell에서 32/64비트 결정 (0) | 2023.10.31 |