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 EraZerg . Évalué à 5.
la doc mentionne que c'est un appel a fnctl, donc peut-être qu'ansi ne le propose pas ?
[^] # Re: flag ansi ?
Posté par Cereal Killer . Évalué à 1.
C'était bien ça ! merci bcp
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.