>  기사  >  운영 및 유지보수  >  Linux의 포크 기능은 무엇입니까?

Linux의 포크 기능은 무엇입니까?

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌원래의
2024-01-25 11:20:341142검색

Linux의 "fork()"는 새 프로세스를 생성하는 데 사용되는 시스템 호출 함수로, 하위 프로세스라고 하는 현재 프로세스의 복사본을 생성합니다. 하위 프로세스는 코드를 포함하여 상위 프로세스와 거의 동일합니다. 데이터 및 개방형 파일 설명자 등은 "pid_t fork(void);"라는 프로토타입을 갖습니다.

Linux의 포크 기능은 무엇입니까?

Linux에서 fork()는 새로운 프로세스를 생성하는 데 사용되는 시스템 호출 함수입니다. 이 함수는 하위 프로세스라고 하는 현재 프로세스의 복사본을 만듭니다. 하위 프로세스는 코드, 데이터, 열린 파일 설명자 등을 포함하여 상위 프로세스와 거의 동일합니다.

fork() 함수의 프로토타입은 다음과 같습니다.

#include <sys/types.h>
#include <unistd.h>

pid_t fork(void);

그 중 pid_t는 프로세스 ID(PID)를 나타내는 데 사용되는 정수형입니다. fork() 함수에는 매개변수가 없습니다.

fork() 함수가 호출된 후 두 개의 반환 값이 있습니다.

  • 상위 프로세스에서 fork()는 하위 프로세스의 PID(하위 프로세스의 ID)를 반환합니다.
  • 하위 프로세스에서 fork()는 0을 반환합니다.

따라서 현재 코드가 상위 프로세스에서 실행되는지, 하위 프로세스에서 실행되는지는 fork()의 반환값을 판단하여 판단할 수 있습니다.

다음은 fork() 함수의 기본 사용법을 보여주는 간단한 샘플 코드입니다.

#include <stdio.h>
#include <unistd.h>

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

    if (pid < 0) {
        fprintf(stderr, "Fork failed.
");
        return 1;
    }
    else if (pid == 0) {
        printf("This is the child process. PID: %d
", getpid());
    }
    else {
        printf("This is the parent process. Child PID: %d
", pid);
    }

    return 0;
}

위 코드에서는 fork() 함수를 호출하여 상위 프로세스인지 하위 프로세스 기반인지 확인합니다. 반환 값에. 상위 프로세스에서는 하위 프로세스의 PID를 인쇄하고, 하위 프로세스에서는 자체 PID를 인쇄합니다.

fork() 함수는 힙, 스택 및 전역 변수를 포함하여 상위 프로세스의 메모리를 하위 프로세스에 완전히 복사한다는 점에 유의해야 합니다. 따라서 fork() 이후에는 상위 프로세스와 하위 프로세스가 서로 간섭하지 않고 별도로 자신의 코드를 실행하게 됩니다.

위 내용은 Linux의 포크 기능은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.