ipcs(1) を使用して、Solaris 10 ボックス上のアクティブな共有メモリ オブジェクトを一覧表示できますが、キーごとに一覧表示されます。ただし、shm_open(3) を介してオブジェクトを開いています。これは、オブジェクトを識別するための名前として文字列を取ります。共有メモリ オブジェクトを名前で一覧表示する方法、または単にキー <-> 名前のマッピングを取得する方法はありますか? コマンド ラインから実行するものに主に関心がありますが、これを行うための API も問題ありません。ありがとう!
1742 次
2 に答える
2
私が覚えている限りでは、Solaris での POSIX 共有メモリはファイル システムの/tmp/
as .SHMDxxx
files の直下または の下に表示されます/var/tmp/.SHMD/
。これは役に立つかもしれないし、役に立たないかもしれません。
于 2009-10-28T18:36:09.187 に答える
-1
名前を一覧表示したり、キー/名前のマッピングを取得したりする方法がわかりません。しかし、私はあなたの問題を解決するAPIを知っていると思います。
PosixAPIでもあるSystemVインターフェースを使用して、キーからセグメントをアタッチできると思います。私はそれが機能する方法は次のようなものだと信じています:
int attach_shmem(key_t key, void** pp){
void* p;
int id;
id = shmget(key, 0, 0);
if (id < 0) {
perror("shmget");
return ERR_SHMGET;
}
p = shmat(id, 0, 0);
if ((long)p == -1) {
perror("shmat");
return ERR_SHMAT;
}
*pp = p;
return 0;
}
于 2009-10-28T17:48:26.977 に答える