반응형
요즘따라 왠지모르게 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를 가지고 새로 시작
반응형
,