반응형
fork()는 현재 실행되는 프로세스에 대해 복사본 프로세스를 생성
- 헤더: unistd.h
- 형태: pid_t fork(void)
- 인수: -
- 반환: pid_t -1 : 실패0 == 자식 프로세스, 새로 생성된 프로세스임0 < 생성된 자식 프로세스 PID
→ 하나의 프로그램이 fork()함수를 만나는 순간 복제본이 생성
프로세스란 디스크에 있던 프로그램 파일이 메모리에 올려지고 시스템의 스케줄에 따라 실행이 되는 실행 단위.
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid == 0) {
// 자식 프로세스
printf("자식 프로세스 실행\\n");
printf("자식 프로세스 ID: %d\\n", getpid());
printf("자식 프로세스 ID: %d\\n", pid);
} else if (pid > 0) {
// 부모 프로세스
printf("부모 프로세스 실행\\n");
printf("부모 프로세스 ID: %d\\n", getpid());
printf("자식 프로세스 ID: %d\\n", pid);
} else {
// fork() 실패
printf("fork() 함수 호출 실패\\n");
return 1;
}
return 0;
}
결과
./a.out
부모 프로세스 실행
부모 프로세스 ID: 6140
자식 프로세스 ID: 6141
자식 프로세스 실행
자식 프로세스 ID: 6141
자식 프로세스 ID: 0
- getpid() : 현재 실행 중인 프로세스의 프로세스 ID
- pid : fork() 함수의 반환값. fork()함수가 호출되면 부모 프로세스는 자식 프로세스의 프로세스ID를, 자식 프로세스는 0을 반환한다. → 이걸로 자식 부모 구분
- getppid() : 현재 실행준이 부모 프로세스의 ID를 반환
getpid()와 pid는 프로세스 ID를 나타내는 값입니다.
- getpid(): getpid() 함수는 현재 실행 중인 프로세스의 프로세스 ID를 반환합니다. 이 함수는 <unistd.h> 헤더 파일에 선언되어 있습니다. 프로세스 ID는 고유한 식별자로, 운영체제에서 프로세스를 구분하는 데 사용됩니다.
- pid: pid는 fork() 함수의 반환 값입니다. fork() 함수가 호출되면 부모 프로세스는 자식 프로세스의 프로세스 ID를, 자식 프로세스는 0을 반환합니다. 따라서 pid 변수를 사용하여 부모 프로세스와 자식 프로세스를 구분할 수 있습니다.
이 두 가지 값은 프로세스의 고유 식별자를 나타내며, 프로세스 간 통신이나 조건부 실행 등에 사용될 수 있습니다.
getppid() 함수는 현재 실행 중인 프로세스의 부모 프로세스 ID(Parent Process ID)를 반환합니다. "ppid"는 "Parent Process ID"의 약자입니다.
getppid() 함수는 <unistd.h> 헤더 파일에 선언되어 있으며, 현재 프로세스의 부모 프로세스 ID를 얻는 데 사용됩니다. 부모 프로세스 ID는 해당 프로세스를 생성한 프로세스의 ID를 의미합니다.
예를 들어, 부모 프로세스가 프로세스 A이고 자식 프로세스가 프로세스 B일 때, 프로세스 B에서 getppid() 함수를 호출하면 프로세스 A의 프로세스 ID를 반환합니다. 이를 통해 프로세스 간의 계층 구조와 관계를 파악할 수 있습니다.
반응형