프로세스 생성에 대한 질문입니다
344
작성한 질문수 159
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <sys/types.h>
int main(int argc, char **argv)
{
int exit_status;
pid_t pid;
struct stat buf;
memset(&buf, 0, sizeof(struct stat));
printf("parent process:%d\n", getpid());
for(int i=0; i<2; i++) {
pid = fork();
if(pid == 0) {
int n = 5;
while(n--) {
// stat("/proc/`getpid()`/stat", &buf);
// printf("gid:%d pid:%d\n", (int)buf.st_gid, (int)getpid());
printf("pid:%d\n", getpid());
sleep(3);
}
}
else if(pid > 0) {
wait(&exit_status);
}
}
printf("Done...\n");
return 0;
}
fork를 완전히 이해했다고 생각했는데, 제 생각 범위에서 일종의 bug 프로세스가 나오는데요....
코드를 보면 각각의 pid를 5번씩 출력하고 끝내야 하는데, 이 출력 마지막에 새로운 프로세스가 5번 더 출력이 되는데 왜 그런건가요....?

답변 2
0
아....exit처리를 안해서 그런 것 같습니다.. 그래서 처음에 만들어진 pid가 for문 2번째를 타서 새로 또 만든 것 같네요... 그래도 도움이 될지 모르니 질문은 남기겠습니다 :((((((((((((.....
inotify 객체에 등록된 watch descriptor 해제 관련 질문
0
103
2
select API 실습 코드 질문
0
107
2
wsl에서 fcntl사용
0
135
2
inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...
0
241
2
./stat 파일이름
0
324
2
fopen r, r+모드 차이
0
518
2
강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?
0
368
1
pthread 질문
0
463
2
I/O Multiplexing(select) 질문
0
356
1
inotify.c. ret 질문
0
347
1
inotify.c 질의합니다.
1
359
1
child process
0
758
1
read/blocking
0
609
1
flock
0
627
1
system call
0
649
1
pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?
0
533
1
fork() 함수 사용시 결과 관련 질문
0
431
1
exec 관련 궁금한 사항
0
511
2
파일 디스크립터와 FILE 구조체에 대한 질문
0
603
1
buf 선언에 따른 read() fail 문제
0
303
2
파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문
0
293
1
2번 multi thread 방법 질문
0
285
1
segmentation fault 발생 관련 문의
1
890
1
라이브 코딩 실습 코드
0
260
1





