2010-08-12 7 views

답변

4

fork() 함수는 현재 프로세스를 복제하여 새 프로세스를 시작합니다. 작동하는 경우 fork()은 부모 프로세스에서 한 가지만 반환하고 나머지 프로세스에서는 "이"프로세스임을 나머지 코드에서 알 수 있도록 자식 프로세스의 다른 것을 반환합니다.

fork()은 의미에서 두 값을 반환하지만 사용자가 생각하는 것과 같은 의미는 아닙니다. 이 유형의 작업을 수행하는 또 다른 함수는 입니다 (직접 반환하는 경우 0을 반환하고 longjmp()을 통해 여기에 도착하면 0이 아닌 값을 반환 함). 당신에 대해 얘기하는 의미에서 두 값을 반환하는 C 함수에 대한

, 그것은 종종 다음과 같이 수행됩니다

int return_2_values(int *other) 
{ 
    *other = 2; 
    return 1; 
} 

과 같이 호출 : 여기

int b; 
int a = return_2_values(&b); 

/* a is now 1, and b is now 2 */ 

, return_2_values() 두 반환 값을 동일한 연속으로 전달하는 반면 fork()setjmp()은 두 개의 다른 연속에 각각 하나의 값을 반환합니다.

+2

여러 값을 반환하는 또 다른 방법은 여러 값을 포함 할 수있는 구조체에 포인터를 반환하는 것입니다. –

5

함수로 fork()는 한 번에 하나의 값만 반환하지만 실행중인 실행 파일의 복사본을 만들고 각 복사본에 의 다른 값을 반환합니다.

+0

다음 내용이 명확하게 표시 될 수 있습니다. http://www.opengroup.org/onlinepubs/000095399/functions/fork.html – You

1

fork()은 하나의 값만 반환합니다. 그냥 다른 값을 반환합니다.

이 동작의 구현은 OS에서 관리합니다.

관련 문제