我有另一個程序1,我創建一個共享內存,我有一個程序2,我想檢查共享內存是否已經創建,如果沒有,然後打印錯誤和不要做任何事情,如果它已經創建,然後接受它。 如果之前創建共享內存然後它可以正常工作,我可以訪問它,但即時通訊的問題是,如果共享內存尚未創建,那麼而不是什麼都不做和打印錯誤的program2創建共享內存和我不希望發生這種情況。 任何幫助將不勝感激,請問任何可能有用的信息,謝謝!檢查共享內存是否存在,以及是否存在共享內存
void main(){
int sm_id;
sm_id = shmget(9000, MAX_USERS * sizeof(User), IPC_CREAT | IPC_EXCL | 0666);
if(sm_id>0){
perror("Shared memory has not been created yet");
exit(1);
}else{
sm_id = shmget(9000, MAX_USERS * sizeof(User), IPC_CREAT | 0666);
list = (User *)shmat(sm_id,0,0);
exit_on_null(list, "Exit on null(error attach)");
}
}
也許只是調用'shmget'沒有'IPC_CREAT'標誌? – gudok
您確定要使用System V共享內存嗎? POSIX共享內存更容易處理。檢查'shm_open'。 – jch
它的工作,即時通訊使用shmget,因爲它的一個項目,因爲它的教授使用...無論如何感謝提示 – GamerGirl