티스토리 뷰
//부모 프로세스가 두개의 자식 프로세스를 생성하고 나중에 종료되는 자식프로세스를 먼저 처리해 주는 예제 프로그램
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
main()
{
pid_t pid1, pid2;
int status;
pid1=pid2=1;
pid1=fork(); //pid1 자식 생성 함
if(pid1>0) //pid1이 부모일 경우,
pid2=fork(); //pid2를 fork한다.
if(pid1>0 && pid2>0) //pid1과 pid2가 모두 부모일 경우 -> 위에 생성한 뒤에
{
waitpid(pid2, &status, 0); //pid2를 기다림
//대기상태 0 : 일반적인 대기 상태로 지정한 자식 프로세스가 종료될 때까지 대기상태
//WNOWHANG : waitpid는 부모프로세스를 대기상태로 만들지 않는 옵션
//WNOWHANG옵션으로 waitpid를 호출하고 만약 종료한 자식 프로세스가 있으면 이를 정상적으로 처리하고 아직 종료한 자식 프로세스가 없으면 곧바로 0을 반환하게 된다.
printf("parent : child2 -exit(%d)\n", status); //두번째 프로세스 부터 실행한다.
waitpid(pid1, &status, 0); //pid1기다림 첫번째 자식 프로세스는 일시적으로 좀비 프로세가 된다.
printf("parent : child1 -exit(%d)\n", status);
}
else if(pid1==0 && pid2==-1) //pid1이 자식이고 pid2는...?
{
sleep(1); //첫 번째 자식 프로세스는 1초동안 대기하다 종료하고
exit(1);
}
else if(pid1>0 && pid2==0) //pid1이 부모이고 pid2가 자식일 경우 ->맨처음 fork시행했을 때
{
sleep(2); //2번째 자식은 2초동안 대기하다 종료 -> 첫번째자식이 먼저 끝남
exit(2);
}
else
printf("포크 생성 실패\n");
}
'Server > Linux' 카테고리의 다른 글
[Linux] ssh 접속 (0) | 2017.07.10 |
---|---|
[Linux] waitpid예제-WNOGANG옵션 (0) | 2017.07.10 |
[Linux] 프로세스간 통신 (0) | 2017.07.10 |
[Linux] 프로세스 (0) | 2017.07.10 |
- Total
- Today
- Yesterday
- https 동시사용
- nginx
- tomcat Ajp
- entity type
- spring boot
- JPA 엔티티
- spring boot http
- plugin
- 의존성 사이클
- spring boot 포트
- JPA
- Spring
- angular2
- JPA란
- 엔진엑스
- JPA 영속성관리
- spring boot 2.1
- 플러그인
- spring jpa
- HTTPS
- HTTP
- SSL
- 프록시 설정
- springboot
- jpa 값타입
- entitymanager
- entityfactory
- exception종류
- AJP
- 자바 가상머신
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |