Jelentkezés Telefonon: +36/30-820-1750ONLINE

Hírek

fork 예제

Kategória: Uncategorized

위의 코드에서 자식 프로세스가 만들어지고 fork()는 자식 프로세스에서 0을 반환하고 부모 프로세스에 양수 정수를 반환합니다. 여기서는 상위 프로세스와 자식 프로세스가 동시에 실행되므로 두 개의 출력이 가능합니다. 따라서 OS가 먼저 상위 프로세스 또는 자식 프로세스를 처리하는 방법을 제어할지 알 수 없습니다. Fork 시스템 호출 사용에 대 한 새 프로세스를 만듭니다., 자식 프로세스 라는 프로세스(시스템 호출 포크라는 프로세스)와 동시에 실행 되며이 프로세스는 부모 프로세스 라고 합니다. 새 자식 프로세스를 만든 후 두 프로세스는 fork() 시스템 호출 다음에 다음 명령을 실행합니다. 자식 프로세스는 동일한 PC(프로그램 카운터), 동일한 CPU 레지스터, 상위 프로세스에서 사용하는 동일한 열린 파일을 사용합니다. 후자의 세 가지는 마지막 항목이 NULL인 문자열에 대한 포인터 배열을 사용하여 인수가 전달되는 형식 execv입니다. 예를 들어 Fork 시스템 호출이 새 프로세스를 생성할 수 있습니다. fork()에서 만든 새 프로세스는 반환된 값을 제외한 현재 프로세스의 복사본입니다. exex 시스템 호출은 현재 프로세스를 새 프로그램으로 대체합니다.

다음 프로그램은 포크와 임원을 모두 사용합니다. 함수는 포크이고 자식 프로세스인 경우 인수 “”를 가진 find 명령을 시작합니다. 관련 기사 : C 프로그램은 C fork() 및 pipe() C fork() 좀비 및 고아 프로세스를 시연하고 이를 사용하여 생성된 메모리 공유 b/w 프로세스를 보여 줍니다. 우리가 클래스에서 이미 보았듯이 fork() 명령은 실행 중인 프로세스의 전체 복사본을 만들고 두 명령을 구별하는 유일한 방법은 반환된 값을 보는 것입니다: 중요: 부모 프로세스 및 자식 프로세스가 동일한 프로그램을 실행중이지만, 그렇다고 의미하지는 않습니다. ey는 동일합니다. OS는 이러한 두 프로세스에 대해 서로 다른 데이터와 상태를 할당하고 이러한 프로세스의 흐름을 제어하기도 다를 수 있습니다. 다음 예제 hello 인쇄 횟수는 생성된 프로세스 수와 같습니다. 총 프로세스 수 = n이 포크 시스템 호출 수인 2n입니다.

따라서 여기에 n = 3, 23 = 8 처음 세 가지는 양식 execl이며 가변 인수 수를 수락합니다. 이 기능을 사용하려면 헤더 파일을 로드해야 합니다. stdarg.c 예제를 참조하십시오. 참조: http://www.csl.mtu.edu/cs4411.ck/www/NOTES/process/fork/create.html 예를 들어 다음 프로그램은 간단한 포크를 수행합니다. fork()의 반환 값은 pid_t(라이브러리 헤더 파일 에 정의되어 있지만, 그 아래에는 단순히 할당되어 int에 암시적으로 캐스팅됩니다.