1

プロセス間で Android NDK のミューテックスやファイル ロックなどを使用してロックする方法はありますか?

一度に 1 つのプロセスだけがソケットに送信できるように、ソケットをロックしたいと考えています。プロセスはフォークされず、独立した呼び出しです。

私は共有ライブラリを作成しているので、書き込み権限が必要な共有の場所に依存することはできません。また、プロセスのローカル ストレージを使用することもできません。これは、定義上、他のプロセスと共有できないためです。これはアプリ名にも当てはまります。私は基本的に、AF_UNIX ソケットを使用した抽象的な名前空間のようなものを探していますが、ミューテックス/セマフォ用です。

4

1 に答える 1

2

プロセスが同じユーザー ID を持っていると仮定すると、 を使用flock(2)してファイルをロックしたり (両方のプロセスがアクセスできるものであれば何でもかまいません)、POSIX セマフォ操作 ( sem_open(3)) を使用してセマフォを使用したりできます。

ユーザー ID が異なっていてもメカニズムは機能しますが、ファイルのアクセス許可をより「オープン」に設定する必要があります。これにより、悪意のあるアプリがロックを取得してサービス拒否攻撃を実行するリスクが生じます。

于 2013-09-04T06:06:02.383 に答える