프로그래밍
[ 시스템 프로그래밍 ] fork()와 execve()의 차이를 알아보자
1. fork()란 무엇인가 - 새로운 프로세스를 생성한 뒤에 현재 프로세스의 메모리 상태를 새로운 프로세스에 그대로 복사하는 것이다. - 부모 프로세스의 메모리 상태에서 몇 가지를 제외하고 그대로 복사하는데 이 중에 부모 프로세스와 다른 것은 pid이다. - 아래 결과를 보면 부모 프로세스와 자식프로세스는 독립된 메모리 주소를 사용한다. ( Code 영역은 공유함 ) - 아래 출력 결과를 보면 자식 프로세스에서 printf를 찍어도 stdout으로 출력된다. 즉, 부모 프로세스의 파일 디스크럽터를 자식프로세스에서 복사한다. - fork로 만들어진 자식 프로세스 부모 프로세스 사이의 통신은 IPC통신을 한다. 대표적으로는 PIPE통신이 있다. - return값은 2개이고, 0과 프로세스 id이다. 0은 ..