C 또는 C로 단일 인스턴스 애플리케이션 생성
소개:
단일 인스턴스 애플리케이션만 보장 동시에 실행되는 애플리케이션 인스턴스는 다양한 시나리오에서 매우 중요합니다. 이 문서에서는 C 또는 C에서 단일 인스턴스 애플리케이션을 구현하는 방법을 살펴봅니다.
파일 잠금:
파일 잠금은 특정 파일에 적용될 수 있습니다. 잠금이 획득되면 보유 프로세스만 파일에 액세스할 수 있습니다. 이는 애플리케이션의 여러 인스턴스가 실행되는 것을 방지하는 데 사용할 수 있습니다.
<code class="c">#include <sys/file.h> int fd = open("lockfile", O_RDWR | O_CREAT); int res = flock(fd, LOCK_EX | LOCK_NB);</code>
뮤텍스:
뮤텍스는 동기화에 사용됩니다. 뮤텍스는 단일 스레드로 획득할 수 있으므로 뮤텍스가 해제될 때까지 다른 스레드가 공유 리소스에 액세스하는 것을 방지합니다.
<code class="c">#include <pthread.h> pthread_mutex_t mutex; pthread_mutex_init(&mutex, NULL); pthread_mutex_lock(&mutex); // Critical section pthread_mutex_unlock(&mutex);</code>
권장 접근 방식:
일반적인 접근 방식 실행 중인 애플리케이션의 프로세스 ID를 포함하는 파일인 pidfile을 생성하는 것입니다. pidfile이 이미 존재하는 경우 애플리케이션의 다른 인스턴스가 실행 중임을 나타냅니다. 그러나 이 방법에는 오래된 pidfile로 인해 제한이 있습니다.
고급 방법:
더 고급 방법에는 Unix 도메인 소켓이나 고유 식별자를 사용하여 단일 파일을 보장하는 것이 포함됩니다. 사례. Unix 도메인 소켓은 특정 이름에 바인딩될 수 있으며 응용 프로그램의 첫 번째 인스턴스만 성공적으로 바인딩할 수 있습니다. 확인을 위해 고유 식별자를 생성하여 공유 메모리 세그먼트에 저장할 수 있습니다.
위 내용은 C 또는 C에서 단일 인스턴스 애플리케이션을 만드는 방법: 파일 잠금, 뮤텍스 및 그 이상?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!