2017-05-02 12 views
0
int shmCreate(int id, int size) 
{ 
    int shmid 
    key_t key; 

    if ((key = ftok(".", id)) == -1) { 
     perror("ftok"); 
     exit(1); 
    } 

    if ((shmid = shmget(key, size, IPC_CREAT | 0666)) == -1) { 
     perror("shmget"); 
     exit(1); 
    } 

    return shmid; 
} 

shmgetを使用する関数を作成しようとしています。私は無効な引数のエラーは、サイズ= 1を除いて、すべての時間を取得しています。私はエラーが、私はipcs -mをチェックするときにメモリセグメントが作成され、1のサイズを持っています。私はこのエラーを取り除く?たshmgetのマニュアルページによればC linux shmget無効な引数

+0

'key'の値は何ですか?つまり、' ftok'が失敗しなかったのでしょうか? – bruceg

+0

84008723、それは違いがありますか?いいえ、 – damian241132

+0

が '-1'なら失敗していないので、' ftok'が失敗したことを意味します。エラーの呼び出しをチェックするのは常に賢明です。 – bruceg

答えて

0

(2):指定されたキーの

EINVALセグメントが存在するが、サイズが そのセグメントのサイズよりも大きいです。

すでに大きなサイズのセグメントは添付できません。したがって、最初に削除するか、別のキーを使用する必要があります。