fork()된 child process에서 변수의 값을 변화시키면 parent process에 영향을 끼지치 못합니까?
int main() { int i = 0; int cid; cid = fork(); if(cid ==0) { ++i; return 0; 또는 break; } else wait(); }
i의 값이 고정이더군요. -_-;;
fork로 생성된 자식과 부모는 서로 다른 Address 영역을 갖습니다. 완전히 서로 다른 프로세스이기 때문에 서로 상대방의 메모리 영역을 Access할 수 없습니다.
이미 답변 하셨듯이 안 됩니다. 그것때문에 IPC 를 사용하기도 하지요. 하지만 그보다 스레드를 사용하는게 더 편합니다. 물론 이 쪽도 이쪽 나름대로 동기화의 문제가 있기는 하지만 둘 다 해보고 편한 쪽을 선택하는 것도 괜찮겠지요..
SOrCErEr
답변 감사합니다. ^_^
What a Cool Days!!!
그냥 thread로 해버렸습니다. 말씀하신 것처럼 동기화 문제는 남았지만요.
그런데 thread에서는 자신을 생성한 process의 (main()함수나 아니면 현재 돌아가고 있는 함수의) 지역 변수를 볼 수 없습니까?
못봅니다.
아, 예 못보더군요. ^_^
이름이 똑같아서 그냥 접근할 수 있을 줄 알았는데 그때 갑자기 생각난 'this' 포인터. -_-;;;
hybrid style의 code를 끄적거리는 저로써는 c와 c++의 경계를 명확히 해야겠다는거... (그래도 // 주석은 그냥 씁니다. -_-; 귀찮아서...)
하여간 IPC를 쓸까 thread를 쓸까하다가 그냥 thread로 했습니다.
아, 참 잠깐 돌아다니다가 tab8 vs tab4 싸움을 봤는데 재미있더군요. 그거 뒷 이야기 같은거 없나요?
좋은 꿈꾸세요
갯수가 한정되어 있다면 쓰래드로 가는편이 좋구요.
서버프로세스 들 처럼 갯수가 무한히 증가한다면
프로세스에 IPC를 고려하심이 어떠신지요.
fork로 생성된 자식과 부모는 서로 다른 Address 영역을 갖습니다
fork로 생성된 자식과 부모는 서로 다른 Address 영역을 갖습니다. 완전히 서로 다른 프로세스이기 때문에 서로 상대방의 메모리 영역을 Access할 수 없습니다.
이미 답변 하셨듯이 안 됩니다.그것때문에 IPC 를 사용하기도 하지요
이미 답변 하셨듯이 안 됩니다.
그것때문에 IPC 를 사용하기도 하지요.
하지만 그보다 스레드를 사용하는게 더 편합니다.
물론 이 쪽도 이쪽 나름대로 동기화의 문제가 있기는 하지만 둘 다 해보고 편한 쪽을 선택하는 것도 괜찮겠지요..
SOrCErEr
답변 감사합니다. ^_^
답변 감사합니다. ^_^
What a Cool Days!!!
그냥 thread로 해버렸습니다. 말씀하신 것처럼동기화 문제는 남았지
그냥 thread로 해버렸습니다. 말씀하신 것처럼
동기화 문제는 남았지만요.
그런데 thread에서는 자신을 생성한 process의
(main()함수나 아니면 현재 돌아가고 있는 함수의)
지역 변수를 볼 수 없습니까?
What a Cool Days!!!
못봅니다.
못봅니다.
아, 예 못보더군요. ^_^이름이 똑같아서 그냥 접근할 수 있을
아, 예 못보더군요. ^_^
이름이 똑같아서 그냥 접근할 수 있을 줄 알았는데
그때 갑자기 생각난 'this' 포인터. -_-;;;
hybrid style의 code를 끄적거리는 저로써는 c와
c++의 경계를 명확히 해야겠다는거... (그래도
// 주석은 그냥 씁니다. -_-; 귀찮아서...)
하여간 IPC를 쓸까 thread를 쓸까하다가 그냥
thread로 했습니다.
아, 참 잠깐 돌아다니다가 tab8 vs tab4 싸움을 봤는데
재미있더군요. 그거 뒷 이야기 같은거 없나요?
좋은 꿈꾸세요
What a Cool Days!!!
갯수가 한정되어 있다면 쓰래드로 가는편이 좋구요.서버프로세스 들
갯수가 한정되어 있다면 쓰래드로 가는편이 좋구요.
서버프로세스 들 처럼 갯수가 무한히 증가한다면
프로세스에 IPC를 고려하심이 어떠신지요.