모든 프로세스에서 액세스할 수 있도록 파일을 어디에서 생성해야 합니까?

모든 프로세스에서 액세스할 수 있도록 파일을 어디에서 생성해야 합니까?

여러 사용자가 여러 번 만들 수 있는 프로그램을 만들고 있는데 프로그램 정보 ID, PID, 포트 등을 추적하는 데 사용할 수 있는 파일이 있으면 좋겠다고 생각했습니다. 프로그램은 프로그램의 다른 인스턴스가 실행 중이라는 것을 알고 있습니다.

내 프로그램이 여러 UNIX 배포판(macOS 포함)에서 실행되기를 원하며 파일을 생성하기에 가장 좋은 위치가 무엇인지 알고 싶습니다(예: /var/{name}또는 ) /Library/{name}. OS에 따라 다른 경로를 사용해야 할 수도 있습니다. 옵션이 다릅니다. 작을수록 좋습니다.

그리고 다른 옵션은 루트 디렉터리에서 실행되는 서버를 만들어 추적하는 것인데, 실행 중인 인스턴스만 추적하기에는 무리라고 생각하고, 파일이 더 나은 옵션이겠지만 모직옷이라고 생각하시나요?

답변1

나는 당신이 읽을 것을 제안합니다남자 레벨 7/var/run정확히 당신이 찾고있는 것 같습니다 . 매뉴얼 페이지를 읽어서 이 정보를 얻는 것이 쉽지 않기 때문에 이전에 이 정보로 작업한 적이 없다면 procfs 파일 시스템을 통해 프로세스 데이터에 액세스할 수 있고 /proc/$pid/env아래 프로그램에 대해 설정된 환경 변수에 액세스할 수 있습니다. . 이를 사용하면 서로 다른 인스턴스를 구별할 수 있습니다.

그러나 를 작성하려면 올바른 액세스 권한이 필요하며 /var/run이는 일반적으로 프로그램을 올바르게 설치하여 보관됩니다(가급적 패키지 관리자에 의해). 사용자 계정(!= 루트)에서도 작동하는 더 간단한 솔루션이 필요한 경우 다른 방법이 있다는 것을 알고 있습니다. 예를 들어 X 서버는 공유 파일을 여기에 기록합니다 /tmp. 이것은 또한 당신에게 대안이 될 수 있습니다. /tmp또는 /dev/shm일반적으로 휘발성 메모리를 사용할 수 있는 더 먼 곳에서 사용됩니다. 예를 들어, 하드 드라이브가 절전 모드에서 회전할 수 있거나 메모리 카드가 손상되기 전에 너무 많은 쓰기 주기만 갖는 등 차단을 줄이므로 이러한 "상태" 파일에 대한 좋은 방법입니다.

휴대성은 얼마나 되나요? 나는 이것이 FreeBSD 시스템에서 가장 좋은 옵션이라고 생각하지 않으며 /dev/shm다른 시스템도 작동해야 하지만 MacOS에서 어떻게 작동할지 전혀 모릅니다. 그러나 나는 Apple이 hier(7) 매뉴얼도 제공한다고 생각합니다.

관련 정보