私は理解できないように見えるので、数時間shmgetで問題を抱えています。呼び出しを行うたびにshmget()
、常に EINVAL: "Invalid Argument" エラーが返されます。
コードの重要な部分は次のとおりです。
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は共有セグメントを表示しませんでした.再起動したところ、動作するようになりました.