このコードを機能させようとしていますが、機能しません。コンパイルエラーや警告を表示しないコードを作成できましたが、実行しようとすると次のエラーで失敗します。
semget:そのようなファイルやディレクトリはありません
これは私のコードです:
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/sem.h>
#include <time.h>
int main(int argc, char *argv[]) {
key_t llave1,llavesem;
int idmem,idsem;
struct sembuf op;
llavesem=ftok("/tmp",'b');
idsem=semget(llavesem,1,0); /* This is the line giving the error*/
if (idsem==-1) {
perror ("semget");
return 1;
}
semctl(idsem,1,SETVAL, &valini);
op.sem_num=0;
op.sem_flg=0;
/*Some code here*/
op.sem_op=-1;
semop(idsem,&op,1);
/*Some code here*/
op.sem_op=1;
semop(idsem,&op,1);
semctl(idsem,1,IPC_RMID);
}
ヘッダーファイルsys/sem.hをインクルードすると...実行可能ファイルがそれを見つけられないのはなぜですか?
私が間違っているのは何ですか?
よろしくお願いいたします。
** * ** * ** * ** * **編集** * ** * ** * ** * ****
与えられた答えに従って、ファイルを作成します。これを行うには、次のものを追加します。
#include <fcntl.h>
そして、ftok文の前に次の2行を追加します。
llave1=open("/tmp/a",O_RDWR|O_CREAT,0644);
llavesem=open("/tmp/b",O_RDWR|O_CREAT,0644);
ファイルは作成されますが、それでも同じエラーが発生します。
ubuntu@/: ls -l /tmp/a
-rw-r--r-- 1 ubuntu ubuntu 0 Sep 11 00:11 /tmp/a
ubuntu@/: ls -l /tmp/b
-rw-r--r-- 1 ubuntu ubuntu 0 Sep 11 00:11 /tmp/b
何か案は?
ありがとう!!