我提前爲我的無知道歉,這是給我比它應該有更多的麻煩,但我一直在敲打我的頭到我的辦公桌上了幾個小時試圖想出什麼我做錯了。我想寫一個共享內存存儲結構的應用程序。出於某種原因,我不能離開地面開始,我一直訪問我的結構的成員得到一個賽格故障。賽格故障在共享使用結構內存
#include <stdio.h>
#include <sys/shm.h>
#include <sys/stat.h>
#define MAX_SEQUENCE 10
struct shared_data
{
long sequence[10];
int sequence_size;
};
typedef struct shared_data shared_data;
int main(int argc, char * argv[])
{
int segment_id;
shared_data * shared_memory;
segment_id = shmget(IPC_PRIVATE, sizeof(shared_data), S_IRUSR | S_IWUSR);
shared_memory = (shared_data *) shmat(segment_id, NULL, 0);
shared_memory->sequence_size = atoi(argv[1]);
printf("\n\nSequence Size: %d\n\n",shared_memory->sequence_size);
shmdt(shared_memory);
}
更新:謝謝大家,我的系統管理員正在運行診斷程序並以某種方式禁用了共享內存。
我只是想你發佈的代碼,並編譯和運行良好 – lxop 2013-03-24 22:24:19