inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

리눅스 시스템 프로그래밍 - 이론과 실습

프로세스 개념, 프로세스 생성 - 라이브 프로그래밍

프로세스 생성에 대한 질문입니다

327

젓인

작성한 질문수 158

0

#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번 더 출력이 되는데 왜 그런건가요....?

linux

답변 2

0

런잇(ProgCoach4U)

:)

0

젓인

아....exit처리를 안해서 그런 것 같습니다.. 그래서 처음에 만들어진 pid가 for문 2번째를 타서 새로 또 만든 것 같네요... 그래도 도움이 될지 모르니 질문은 남기겠습니다 :((((((((((((.....

inotify 객체에 등록된 watch descriptor 해제 관련 질문

0

37

2

select API 실습 코드 질문

0

41

2

wsl에서 fcntl사용

0

73

2

inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...

0

180

2

./stat 파일이름

0

273

2

fopen r, r+모드 차이

0

460

2

강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?

0

326

1

pthread 질문

0

419

2

I/O Multiplexing(select) 질문

0

325

1

inotify.c. ret 질문

0

302

1

inotify.c 질의합니다.

1

317

1

child process

0

715

1

read/blocking

0

565

1

flock

0

565

1

system call

0

598

1

pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?

0

487

1

fork() 함수 사용시 결과 관련 질문

0

371

1

exec 관련 궁금한 사항

0

450

2

파일 디스크립터와 FILE 구조체에 대한 질문

0

552

1

buf 선언에 따른 read() fail 문제

0

251

2

파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문

0

254

1

2번 multi thread 방법 질문

0

242

1

segmentation fault 발생 관련 문의

1

842

1

라이브 코딩 실습 코드

0

235

1