> 백엔드 개발 > C++ > C 또는 C에서 단일 인스턴스 애플리케이션을 만드는 방법: 파일 잠금, 뮤텍스 및 그 이상?

C 또는 C에서 단일 인스턴스 애플리케이션을 만드는 방법: 파일 잠금, 뮤텍스 및 그 이상?

Patricia Arquette
풀어 주다: 2024-10-26 16:44:30
원래의
459명이 탐색했습니다.

How to Create Single-Instance Applications in C or C  : File Locks, Mutexes, and Beyond?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿