0

サーバーと、相互に通信しようとしている複数のクライアントで構成されるシステムを作成しようとしています。クライアントはデータを共有メモリ(ftok / shmgetを使用して作成)に配置し、このメモリにデータを書き込むことができます。これらは2つの別々のプログラムで構成されています。

サーバーは、クライアントが共有メモリに書き込んだ値を読み取り、ファイルに書き込みます。クライアントに共有メモリにデータを書き込んでもらい、サーバーにデータを読み取らせることはできますが、共有メモリをロックするのに問題があるため、複数のクライアントが同時に書き込むことはありません。

(sem_openを使用して)セマフォを作成しようとしましたが、これはプロセス間で共有されません。プロセス間(またはミューテックスの方がうまくいく可能性があるため、ミューテックス)でセマフォを共有するにはどうすればよいですか?

4

2 に答える 2

2

名前付きセマフォまたはミューテックスを使用する場合:

int permissions = 0644;
sem_t *shared_sem;
unsigned int inital_value = 1;

shared_sem = sem_open("SharedSem", O_CREAT, permissions, inital_value);

また、権限が正しく設定されていることを確認してください。

于 2012-10-03T02:13:40.617 に答える
1

「名前付き」セマフォを使用します...たとえば、両方のプロセスで使用される「/someuniquename」。

于 2012-10-03T01:52:11.743 に答える