J'essaye d'obtenir ce code fonctionnant mais je ne peux pas. Je parviens à créer un code qui ne montre aucune erreur de compilation ou d'avertissement, mais lorsque je tente de l'exécuter échoue avec cette erreur:semget pas tel fichier ou répertoire
semget: Aucun fichier ou répertoire
Voici mon code:
#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);
}
Si j'inclue le fichier d'en-tête sys/sem.h ... pourquoi le fichier exécutable ne le trouve pas?
Qu'est-ce que je fais mal?
Merci à l'avance et meilleures salutations,
** * ** * ** * ** * ** EDIT ** * ** * ** * ** * ****
Après les réponses, je crée les fichiers, à faire ajouter ceci incluent:
#include <fcntl.h>
Et j'ajouter ces deux lignes avant la phrase ftok:
llave1=open("/tmp/a",O_RDWR|O_CREAT,0644);
llavesem=open("/tmp/b",O_RDWR|O_CREAT,0644);
Les fichiers sont créés mais j'ai toujours la même erreur.
[email protected]/: ls -l /tmp/a
-rw-r--r-- 1 ubuntu ubuntu 0 Sep 11 00:11 /tmp/a
[email protected]/: ls -l /tmp/b
-rw-r--r-- 1 ubuntu ubuntu 0 Sep 11 00:11 /tmp/b
Des idées?
Merci!
Super !!! J'ai changé cette ligne: idsem = semget (llavesem, 1, IPC_CREAT); au lieu de "0" j'ai mis "IPC_CREAT" et ça marche !! Maintenant, je suis confronté à un "core dump" échoue: -D – user1660559
J'ai copié et collé votre code avec l'indicateur IPC_CREAT supplémentaire dans un fichier de test et il semble fonctionner sans erreurs. Pouvez-vous vérifier que le code de votre question d'origine est toujours exact et génère des erreurs? Aussi qu'est-ce que valini? Il n'est pas défini dans le code que vous avez posté donc j'ai fait un int simple. –