작성
·
199
0
실행했을 때 저 같은 경우는 parent process pid : ~~ 프린트 되고나서 child process pid ~~~가 프린트 됩니다. 그리고 this is the function(pid)가 parent, child 순으로 총 두번 연속해서 출력되는데요. 강의에서는 parent pid 출력된 후 this is the function 출력되고 child pid 출력 후 다시 this is the function이 출력됐습니다. 이부분이 저랑 조금 다른데 왜 그런건가요??
답변 2
3
좋은 질문 해주셨네요~ :)
fork() 이후 기존 process인 parent process와 새로 생긴 process인 child process의 실행 순서는 정의되어 있지 않습니다. 즉, 어떤 process가 먼저 실행을 시작할 지 모른다는 것이고, 경우에 따라 바뀔 수 있다는 것입니다.
프로그래밍을 하다보면 parent와 child의 실행 순서를 반드시 맞춰야 하는 경우가 생기는데요, 그런 경우 사용될 수 있는 것이 바로 동기화(Synchronization) 기능입니다. 동기화를 위해 사용할 수 있는 방법은 여러 가지 입니다. 그 중 가장 대표적으로 사용될 수 있는 방법은 POSIX semaphore와 SysV semaphore 입니다.
동기화 기능을 포함한 IPC(Inter-Process Communication)에 대한 상세한 설명과 예제는 '리눅스 IPC 프로그래밍' 강좌에서 다루고 있습니다 :D
0