Ich finde den Fehler in der Musterlösung nicht...
-
Hallo,
heute die Musterlösung bekommen von meinem Lehrer wollte compilieren und bekomme lauter Fehlermeldungen:
das ist der code, warum läuft das ding nicht?
// Sperren von einer Datei
#include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> int main(int argc, char* argv[]) { struct flock stSperre; int iRc; int fd; if ((fd = open("locktest.dat", O_WRONLY | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO )) == -1) { printf("Fehler %s beim open\n", strerror(errno)); } stSperre.l_type = F_WRLCK; stSperre.l_whence = SEEK_SET; stSperre.l_start = atoi(argv[1]); stSperre.l_len = atoi(argv[2]); /* Prüfen, ob Schreibsperre für den übergebenen Bereich möglich ist */ if ((iRc = fcntl (fd, F_GETLK, &stSperre)) == -1) { printf("Fehler %s bei F_GETLK.\n", strerror(errno)); return; } if (stSperre.l_type == F_UNLCK) /* Sperren ist möglich */ { /* Schreibsperre für den übergebenen Bereich setzen */ stSperre.l_type = F_WRLCK; if ((iRc = fcntl (fd, F_SETLK, &stSperre)) == -1) { if (errno == EACCES || errno == EAGAIN) { printf("Jemnd hat eine sperre gesetzt in der zwischenzeit, bitte warten"); } } else { /* Jetzt kann die Datei bearbeitet werden */ lseek (fd, atoi(argv[1]), SEEK_SET); iRc = write (fd, "12345678910", atoi(argv[2])); printf("<%d> Zeichen geschrieben. Taste... ", getpid()); getChar; } /* Schreibsperre für den übergebenen Bereich wieder aufheben */ stSperre.l_type = F_UNLCK; iRc = fcntl (fd, F_SETLK, &stSperre); if (iRc == -1) { printf("Sperre aufheben ist nicht möglich\n"); } else { printf("Sperre ist aufgehoben"); } } else { printf("Sperre nicht möglich. Bereich ist gesperrt von <%d>\n", stSperre.l_pid); } return 0; }
-
die Fehler noch:
-
sieht so aus, als würde ein #include fehlen.
-
Auf Linux ist struct flock in sys/file.h enthalten.