私は共有メモリを作成し、共有メモリが作成されているかどうかをチェックしたいプログラム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)");
}
}
はたぶん単に 'IPC_CREAT'フラグなし' shmget'を呼び出すために...さらに詳しい情報については、manページを参照してください? – gudok
System V共有メモリを使用してもよろしいですか? POSIX共有メモリは、使用する方がはるかに簡単です。 'shm_open'をチェックしてください。 – jch
それはプロジェクトで、教授がそれを使用しているので、shmgetを使用していました。とにかくチップのおかげで。 – GamerGirl