중복 실행 막기
글쓴이: purewell / 작성시간: 일, 2003/02/02 - 6:24오후
ㅡ_-)v Windows의 팁으로는 Mutex 객체(아마 MFC팁에서인 듯...)를
이용해서 동일 프로세스가 돌아가는 것을 막았는데
ㅡ_-)a 리눅스에서는 어떻게 해야하나요!?
나름대로 돌을 굴려본 결과로
pid 파일을 만들고 그 파일을 쓰기락을 걸면
동일 프로세스가 그 파일을 쓰려고 할 때, 쓰기 실패가 일어나면
이미 동일 프로세스가 돌아가는 것으로 인식하는...
어떻게 해야하나요~?
Always wish be pure well...
Forums:
mutex는 리눅스에서도...
뮤텍스는 리눅스에도 제공합니다.
윈도우즈에서 했던 방식으로 리눅스에서 코딩하세요.
이만.
berise@nowhere.comes.out
Windows에서 제공하는 mutex는 프로세스간에 동기화처리를 할 수
Windows에서 제공하는 mutex는 프로세스간에 동기화처리를 할 수 있지만 Linux에서 pthread에서 제공하는 mutex는 한 프로세스안의 쓰레드끼리들의 동기화만 처리할 수 있습니다. (즉 Windows의 Critical Section과 같습니다)
Linux에서는 IPC인 Semaphore나 Shared Memory를 써야지 프로세스간 동기화 처리를 할 수 있습니다.
제가 쓰는 단순한 방법입니다.
저는 Shell Script 로 처리 합니다. /etc/init.d 안의 스크립트들을 보시면
좀 더 똑똑하게 되어있죠. 8)
단, cron 으로 실행하신다면 current directory 나 environment variables
에 신경을 쓰셔야 할 겁니다.
--
Minimalist Programmer
mutex 는 프로세스간 동기화에도 사용 가능
:lol:
제가 알고 있기로는 mutex 가 공유메모리내에 위치하고 있으면 프로세스간에도 동기화 처리할 수 있는 걸로 알고 있습니다. 확인해 보시기를 ...
POSIX Thread를 보면 Mutex만들 때 특정 옵션을 줘서 Sha
POSIX Thread를 보면 Mutex만들 때 특정 옵션을 줘서 Shared Memory에 올려놓으면 다른 Process에 있는 Thread간도 동기화 처리를 할 수 있다고 합니다.
하지만 이경우에 다른 Process가 Mutex로 lock을 얻은 상태에서 만약 그 Process가 자체적으로 종료처리할 기회를 얻지 못하고 죽어버리게 되는 경우 Mutex의 lock을 풀지 못하고 죽어버려서 Deadlock이 걸릴 수 있는 거로 알고 있습니다.
그래서 Process간 mutex는 쓰지 않는 것이 좋은 걸로 알고 있습니다.
Programming with Threads (Prentice Hall)에서 본 내용입니다. 그래서 저 문제를 해결하는 다른 방법이 있는지는 모르겠네요.. 혹시 있다면 알려주시면 좋겠습니다~ ^^
Re: mutex 는 프로세스간 동기화에도 사용 가능
pthread 라이브러리 자체 spec 은 뮤텍이 프로세스간 동기화 처리도
할 수 있으나, 리눅스는 그렇지 못합니다. skjk 님 말씀대로 입니다.
제가 KLTP 에 올렸던 글을 참고 하세요.
http://kltp.kldp.org/stories.php?story=01/07/05/2982955
Orion Project : http://orionids.org
댓글 달기