fork()함수는 호출한 프로세스의 복사본 프로세스를 생성한다. 실패할 경우 -1을 리턴한다.
성공할 경우 프로세스가 둘로 나뉘어서 원본 프로세스와 복사본 프로세스에게 전달되는 리턴값이 다르다.
원본 프로세스의 리턴값은 복사본 프로세스 ID이고, 복사본 프로세스의 리턴 값은 0이다.
------------------------------------------------
#include
<stdio.h>
#include <unistd.h>
#include
<sys/types.h>
int main(int argc, char
**argv)
{
pid_t pid;
int data=10;
pid=fork();
if(pid==-1)
printf("fork 실패, 프로세스 id : %d \n", pid);
printf("fork 성공, 프로세스 id : %d \n", pid);
if(pid==0) /* 자식
프로세스라면 */
data+=10;
else /* 부모 프로세스라면 */
data-=10;
printf("data : %d
\n", data);
return 0;
}
------------------------------------------------
fork() 함수 호출 성공시, 부모 프로세스는 자식 프로세스의 ID를 리턴받고 fork 함수 호출 이후를 실행하게 되고
자식 프로세스 역시 0을 리턴받고 fork함수 호출 이후를 실행하게 된다. 실행의 흐름이 두 갈래로 나뉜다.
그러나 부모프로세스와 자식 프로세스는 같은 프로그램 코드를 서로 다른 공간에서 실행하므로 데이터의 공유는 일어나지 않는다.
독립된 두 개의 프로그램이 실행되는 것이다.
'컴퓨터' 카테고리의 다른 글
[명지스패셜] 자연캠퍼스 로봇동아리 RATS (0) | 2012.09.07 |
---|---|
직렬화, 역직렬화, 스트림 (0) | 2012.09.05 |
[영상포맷] 영상포맷의 종류와 설명 (2) | 2012.08.30 |
[Network] 프로토콜 설계 (2) | 2012.08.30 |
정적 라이브러리(Static library) vs 동적 라이브러리(Dynamic library) (2) | 2012.08.29 |