본문 바로가기
dev/c++

[c++] 프로세스 ID 가져오기 (getpid, getppid)

by 최연탄 2023. 6. 1.
728x90
반응형

참고: https://www.geeksforgeeks.org/getppid-getpid-linux/

getpid(), getppid()는 모두 unistd.h 라이브러리에 정의된 내장 함수입니다.

1. getpid()

호출한 프로세스의 프로세스 ID를 반환합니다. 이는 유니크한 임시 파일 이름을 생성하는 루틴에서 자주 사용됩니다.

문법:

pid_t getpid(void);

리턴: getpid()는 현재 프로세스의 프로세스 ID를 리턴합니다. 이 함수는 에러를 throw 하지 않고 항상 성공합니다.

#include <iostream>
#include <unistd.h>

using namespace std;

int main() {
    cout << "Current process id: " << getpid() << endl;

    return 0;
}

2. getppid()

getppid()를 호출한 프로세스의 부모 프로세스 ID(get parent process id)를 리턴합니다. getppid()를 호출한 프로세스가 다른 프로세스의 fork()에 의해 생성되었으며 함수 호출 시점에 부모 프로세스가 여전히 존재하는 경우 getppid()는 부모 프로세스의 프로세스 ID를 반환합니다. 이 조건을 만족하지 않는 경우 getppid()는 운영체제의 최초 프로세스의 ID인 1을 리턴합니다.

문법:

pid_t getppid(void);

리턴: getppid()는 현재 프로세스의 부모 프로세스 ID를 리턴합니다. 이 함수는 에러를 throw 하지 않고 항상 성공합니다.

#include <iostream>
#include <unistd.h>

using namespace std;

int main() {
    int pid = fork();

    if (pid == 0) {
        cout << "Child: Current Process id: " << getpid()
             << ", Parent Process id: " << getppid() << endl;
    } else {
        cout << "Parent: Current Process id: " << getpid()
             << ", Child Process id: " << pid << endl;
    }

    return 0;
}

노트: 어떤 경우에는 자식 프로세스가 부모 프로세스 보다 먼저 실행되는 경우도 있습니다. 왜냐하면 다음 CPU를 할당 받을 프로세스를 정하는 작업은 운영체제의 정책에 따라 다르게 때문입니다. 또한 프로세스 ID 값 자체는 매번 다를 수 있습니다.

관련 글

c++ 프로세스 생성 (fork)

반응형

'dev > c++' 카테고리의 다른 글

[c++] 쓰레드 생성 (pthread)  (10) 2023.06.02
[c++] 프로세스 생성 (fork)  (8) 2023.06.01
[c++] 더하기, 두 수의 합을 출력  (1) 2018.04.24
[c++] 문자열 여러 행 출력하기 (cout)  (0) 2018.04.24

댓글