すべてのプロセスがアクセスできるようにファイルをどこで作成する必要がありますか?

すべてのプロセスがアクセスできるようにファイルをどこで作成する必要がありますか?

複数のユーザーが複数回作成できるプログラムを作成していますが、プログラム情報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)マニュアルも提供すると思います。

関連情報