Forum Programmation.c lockf et pb d'include

Posté par  .
Étiquettes :
0
6
jan.
2006
Bonsoir les moules!

Un petit problème en c m'amène a vous.
Le but du jeu est d'utiliser lockf et comme un bon bout de code vaut mieux qu'un long discours, voilà mon code :


#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/file.h>
#include <unistd.h>

int main(int argc, char **argv)
{
int fd;
off_t offst;
char *buff;

if( (fd = open("./fic", O_RDONLY)) != -1 )
{
printf("ouvert\n");
offst = lseek(fd, 12, SEEK_SET);
if( ( lockf(fd, F_TLOCK, offst) ) != -1)
{
buff = (char *)malloc(sizeof(char)*2);
read(fd, buff, sizeof(char));
write(1, buff, sizeof(char));
printf("\n");
free(buff);
}else{
perror("lockage");
}
}else{
perror("ouverture");
}

if( (close(fd)) != -1 )
{
printf("ferme\n");
}else{
perror("fermeture");
}

return 0;
}


et voilà c'que ça me sort quand je compile :


gcc -Wall -ansi main.c -o verrou
main.c: In function 'main':
main.c:19: warning: implicit declaration of function 'lockf'
main.c:19: error: 'F_TLOCK' undeclared (first use in this function)
main.c:19: error: (Each undeclared identifier is reported only once
main.c:19: error: for each function it appears in.)
make: *** [all] Erreur 1


Alors que man lockf m'indique qu'il ne faut include que unistd.h !?

J'ai essayer ça sur 2 debian différentes et j'ai le même resultat.

Quelqu'un à une idée ?

Merci d'avance.
  • # flag ansi ?

    Posté par  . Évalué à 5.

    as tu essayé sans le -ansi ?

    la doc mentionne que c'est un appel a fnctl, donc peut-être qu'ansi ne le propose pas ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.