void op (int sem_nr) { (FEJLEN SKER VED DENNE LINIE???...DET KAN VEL IKKE PASSE) struct sembuf sem_b; sem_b.semu_nr = sem_nr; sem_b.sem_flg = SEM_UNDO; }
Synes godt om
Slettet bruger
06. februar 2004 - 11:37#6
Du har skrevet følgende: struct sembuf sem_b; sem_b.semu_nr = sem_nr;
void op (int sem_nr)DET ER VEL DET SAMME SOM STÅR { struct sembuf sem_b; sem_b.semu_nr = sem_nr; OG HER sem_b.sem_flg = SEM_UNDO; if(semop(sem_id,&sem_b,1)==-1) printf("optællingsfejl af semafor") }
VI HAR OGSÅ EN FUNKTION DER HEDDER "NED". HVIS VI UDKOMMENTER "OP" FÅR VI BARE FEJLEN I "NED" FUNKTIONEN. SÅ LÆNGE "OP" IKKE ER UDKOMMENTERET HENVISER DEN IKKE TIL FEJL I FUNKTIONEN "NED"
Synes godt om
Slettet bruger
06. februar 2004 - 12:12#12
hvordan ser din main funktion ud? i sidste linie skal der stå :
Problemet er at I har noget stående FØR "void op" funktionen. Det er typisk en uafsluttet erklæring eller noget andet. F.eks
int
void up(int ...)
Derfor vil jeg gerne se linierne lige inden funktionen. Hvis linien lige inden funktionen er en #include så skal I se i slutningen af den inkluderede fil.
//variables int pid; union semun semafor_setup; int sem_id;
struct segment { char x; int y; char type; char *navn int frem; int tilbage; };
struct tog { int nr; struct segment **plan; int cur_index; int retning; }
void op (int sem_nr) { struct sembuf sem_b; sem_b.semu_nr = sem_nr; sem_b.sem_flg = SEM_UNDO; if(semop(sem_id,&sem_b,1)==-1) printf("optællingsfejl af semafor") }
Her er alt det kode der står inden "op"
Synes godt om
Slettet bruger
06. februar 2004 - 13:14#23
Prøv at kopiere hele denne tekst ind i compileren... Det er det eksempel jeg har: #include <stdlib.h> #include <stdio.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <sys/types.h> #include <sys/sem.h> #include <sys/ipc.h>
#define N 5 #define LEFT (i-1)%N #define RIGHT (i+1)%N #define THINKING 0 #define HUNGRY 1 #define EATING 2 #define FREE 3 #define MUTEX 0
void up(int); void down(int);
union semun { int val; struct semid_ds *buf; unsigned short int *array; };
struct shared { int chair[6]; };
pid_t pid; //indeholder childprocess id union semun sem_union; //parameter til semctl() kaldet
think(int fil) { printf("filosof på stol %d tænker\n", fil);fflush(stdout); sleep(2);
}
void del_sem() { int i; //bruges i løkken der sletter alle semaforene union semun sem_union; for (i=0;i<7;i++) semctl(sem_id, i, IPC_RMID, sem_union); }
jeg kan ikke give jer point, ved ikke hvorfor...der sker ikke noget når jeg acceptere
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.