반응형

요즘따라 왠지모르게 fork()를 굉장히 많이봐서 공부할겸 정리를 하게 되었다

참조사이트:)

http://forum.falinux.com/zbxe/index.php?document_srl=412814&mid=C_LIB

https://kldp.org/node/545


fork() -프로세스 복제 

-현재 돌아가고 있던 process를 복사해서 다른 process를 만드는 것

- fork가 호출되면 프로그램이 1개에서 2개가 된다(부모&자식)

-두개로 나뉜 다음 스케줄러에는 자식이 추가되면 프로그램 실행은 부모에서 fork()의 리턴이 한번 실행되고 자식에서 fork() 리턴이 실행되는 형태로 진행이 된다

프로그램 실행 ---> fork() 문 ---> 부모의 fork() 리턴이후----> 자식의 fork() 리턴이후 실행

ex)
if (fork () == 0) { 
/* 자식 프로세스에서 실행되는 코드 */
}
else {
/* 부모 프로세스에서 실행되는 코드 */
}

-fork() 진입후 프로그램이 1개에서 2개로 되면서 스케줄러는 이제 1개에서 2개의 프로그램을 실행하게 된다

-그래서 부모인 경우 fork의 리턴값이 0이 아닌 값이 되고 자식프로그램인 경우 fork의 리턴값이 0인 된다


exec() -프로세스 대체 

-process로 하여금, 다른 binary를 가지고 새로 시작



반응형
,