2

ipcs(1) を使用して、Solaris 10 ボックス上のアクティブな共有メモリ オブジェクトを一覧表示できますが、キーごとに一覧表示されます。ただし、shm_open(3) を介してオブジェクトを開いています。これは、オブジェクトを識別するための名前として文字列を取ります。共有メモリ オブジェクトを名前で一覧表示する方法、または単にキー <-> 名前のマッピングを取得する方法はありますか? コマンド ラインから実行するものに主に関心がありますが、これを行うための API も問題ありません。ありがとう!

4

2 に答える 2

2

私が覚えている限りでは、Solaris での POSIX 共有メモリはファイル システムの/tmp/as .SHMDxxxfiles の直下または の下に表示されます/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 に答える