problem mit semaphoren
-
hallo, ich habe eine semaphorengruppe mit nur 1 semaphor angelegt:
if ((table->semid = semget(IPC_PRIVATE, 1, O_CREAT|0770)) == -1) {perror("error in semget()\n"); return EXIT_FAILURE;} table->semnum = 1; unsigned short init[1] = {1}; if ((semctl(table->semid,1,SETALL,init)) == -1) {perror("error in semctl()\n"); return EXIT_FAILURE;}
zur synchronisation benutze ich die standard-funktionen semWait und semSingal an den entsprechenden Stellen in meinem Programm:
semWait(table->semid, table->semnum); /* ... tue irgendwas mit dem table ... */ semSignal(table->semid, table->semnum);
So, compilen geht, wenn ich es aber ausführe bekomme ich zwei Meldungen ausgegeben:
fatal error: semop(wait)
fatal error: semop(signal)diese fehler werde geworfen bei der ausführung von semWait() bzw. semSignal, und sind wohl vorprogrammierte Meldungen, also ich hab sie nicht geschrieben.
ich gebe euch auch mal die struktur jobtable, deren instanz "table" ja hier benutzt wird bei den funktionen:
struct jobtable{ /* sonstige attribute ..*/ int semid; short semnum; };
da ich mich damit nicht so auskenne, kann es gut sein dass ihr noch weitere infos braucht, dann bitte einfach bescheid geben
-
Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
semWait und semSingal sind meines wissens nach keine funktionen irgendeines standards. die glibc kennt sie zumindest nicht. woher hast du die funktionen?
-
hey, sorry sorry, in der tat sind das keine standartfunktionen.
ich bin grad an nem uni-projekt und wir bekommen massig code, haben zig files und ich hatte eigentlich alles abgesucht, diese funktionen aber nirgends gefunden.
sie waren aber irgendwo versteckt, habe sie übersehen. da ich auch die fehlermeldung nicht gefunden habe, dachte ich das sind eben standard-funktionen.
naja dann ist ja klar dass hier keine ne antwort wusste
es hat sich inzwischen auch erledigt, jetzt wo ich die funktionen im code gefunden habe..
trotzdem danke für's lesen