[unix-ws] fcntl unter Solaris8

Martin Olschewski olschewski at zpr.uni-koeln.de
Mit Dez 11 13:52:46 CET 2002


Hallo,

seit dem Einspielen der letzten recommended Patches auf meine
Sparc/Solaris 8 Maschinen bleiben dort alle Prozesse hängen,
die versuchen mit fcntl einen Lock zu setzen.  Beispiel:


#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>

int main(void) {

    char fname[] = "fcntl.c";	/* lock own source */
    int  fd;
    struct flock lock;

    if ((fd = open(fname, O_RDWR)) < 0) {
	perror(fname);
	return EXIT_FAILURE;
    }
    lock.l_type = F_WRLCK;
    lock.l_whence = SEEK_SET;
    lock.l_start = 0;
    lock.l_len = 4;
    printf("locking %s...\n", fname);
    if (fcntl(fd, F_SETLK, &lock) == -1) {
	perror(fname);
	return EXIT_FAILURE;
    }
    printf("press <return> to unlock %s.\n", fname);
    getchar();

    lock.l_type = F_UNLCK;
    printf("unlocking %s...\n", fname);
    if (fcntl(fd, F_SETLK, &lock) == -1) {
	perror(fname);
	return EXIT_FAILURE;
    }
    printf("press <return> to continue.\n");
    getchar();

    close(fd);
    return EXIT_SUCCESS;
}


Dieses billige Testprogramm bleibt jetzt schon hinter der
"locking fcntl.c..."-Zeile hängen und läßt sich nur noch durch eine
Kombination von ^C und kill -9 abbrechen.

Hat noch jemand dieses Problem?
Gibt es schon einen neuen Patch?
Bin ich nur zu blöd, oder muß
ich jemand anderen dafür treten?

Fragen über Fragen, für Antworten bin ich dankbar,

  Martin Olschewski

-- 
Dipl.-Inform. Martin Olschewski 	Center for Applied Computer Science
Email: olschewski at zpr.uni-koeln.de	University of Cologne
Tel.:  ++49/221/470-6018		Weyertal 80
Fax.:  ++49/221/470-5160		D-50931 K\"oln