我一直有一個shmget的問題現在幾個小時,我似乎無法弄清楚。每次我嘗試撥打電話時都會收到一個EINVAL:「無效的參數」錯誤。shmget()給EINVAL錯誤
代碼的重要的部分是如下:
key_t generate_ipc_key()
{
key_t ipc_key = ftok(__FILE__, KEY);
if(ipc_key < 0) {
perror("Failed to Generate IPC Key");
exit(IPC_FAILURE);
}
return ipc_key;
}
int shared_memory_create(size_t memory_size)
{
int shm_key = shmget(generate_ipc_key(), memory_size, IPC_CREAT | 0666);
if(shm_key < 0) {
perror("Failed to Create Shared Memory Key");
exit(CREATE_FAILURE);
}
return shm_key;
}
該函數被調用:
shm_key = shared_memory_create(sizeof(data_t));
凡data_t是一個結構:
typedef struct {
int hCount;
int oCount;
int bCount;
} data_t;
同樣在它有助於共享內存的值是:
kernal.shmmax = 33554432
kernal.shmall = 2097152
kernal.shmmni = 4096
我對C相當陌生,所以我確信這是簡單的東西我很想念但是我似乎無法弄清楚。任何幫助表示讚賞!
我不確定它到底是什麼,ipcs顯示沒有共享段,我重新啓動,現在它工作。
這可能有幫助。 EINVAL!=「無效參數」。 EINVAL =將創建一個新段,並且'size SHMMAX',或者不創建新段,具有給定鍵的段存在,但大小大於該段的大小。手冊頁。檢查'memory_size'參數。 –
yeyo
2013-03-14 01:07:25
@Kira:我得到了errno 22,這是我的系統上的EINVAL。 – pal25 2013-03-14 01:12:46