본문 바로가기

전공 과목 시험정리/C 프로그래밍

fork 로 프로세스 생성 후, 프로세스간 변수 공유

fork() 로 자식 프로세스를 생성한 후에,

자식프로세스에서 배열에 1을 더하고,

부모프로세스에서 그것을 출력한다.


.. 인 프로그램에서, 이상하게도 자식 프로세스에서 연산한 값이 부모프로세스에게 전달되지 않았다.


-->

fork() 로 프로세스를 생성하면, 자식 프로세스와 부모 프로세스 두개의 프로세스를 제어하게 된다. 이때 각각 프로세스는 변수를 복사 한 것처럼 관리되어 지는데,


한 프로세스에서 (자식 프로세스에서 라고 가정할 때) 배열의 값을 수정하고 다른 프로세스에서 그것을 출력한다면 각자 다른 변수인데 값만 같을 뿐이므로,
다른 프로세스에서 출력한 값이 변했을 리가 없다.


따라서 변수를 수정하고 나서 그 값을 공유하고 싶다면 다른 방법을 사용해야 하는데,





번째로 공유메모리를 사용하는 방법이 있다.

번째로 소켓을 이용하는 방법이 있고, (소켓 생성시에 PF_INET 을 인자로 준다던가)

번째로 큐를 이용하는 방법이 있다. (이번에 찾으면서 처음 알게됨)

번째로 파이프를 이용하는 방법이 있다.



각 방법에 대한 예제는 나중에 올리도록 하겠다.

'전공 과목 시험정리 > C 프로그래밍' 카테고리의 다른 글

C++ 에서의 소켓프로그래밍  (0) 2015.04.25
Fate 서버 소스 (미완성)  (0) 2015.04.25
웹에서 서버정보 파싱  (0) 2015.04.25
쓰레드 프로그램  (0) 2015.04.25
알고리즘 대결 서버 소스  (0) 2015.04.25