Recuper les log dans un fichier

ben01n Messages postés 65 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 4 août 2010 - 12 juin 2003 à 14:05
cs_hammedi Messages postés 1 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 24 février 2006 - 24 févr. 2006 à 00:37
salut tout le monde
je prog un client-serveur sous linux qui devrait envoyer le contenu d'un fichier log et je me galère grave

pour ce qui est d'envoyer un texte saisi à l'écran pas de problème mais dès que je touche aux fichier ça merde

en fait, je voudrais traduire cet algorythme :

ouvrir fichier "test.txt"
tant que (pas fin du fichier)
lire la ligne suivante du fichier
placer la ligne dans la variable "char buf"
là j'appelle ma fonction qui envoi "buf" avec un socket(ça pas de problème)
fin tant que
tant que () // boucle infinie
rechercher s'il y a une nouvelle ligne
si oui : placer la nouvelle ligne dans la variable "char buf"
là j'appelle ma fonction qui envoi "buf" avec un socket
fin tant que

en fait au final je veux que mon prog devra envoyer au lancement toutes les lignes d'un fichier (les unes après les autres) puis lorsque c'est fait il devra envoyer le nouvelle lignes du fichier texte (qui apparaissent à intervals irréguliers).

Pour ceux qui connaissent Linux, je cherche à refaire la commande "tail -f test.txt" dans mon programme

De plus, le problème est qu'il faut que j'utilise que des fonctions portables sous windows et sous linux sans modif

merci d'avance

8-) Ben01n 8-)

2 réponses

psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
29 nov. 2003 à 13:23
J'ai peut etre une solution, mais que je n'ai pas testé.

char *buffer;
int position=0;
int filepos=0;
int lenfile=0;
//lenfile = taille du fichier
FILE *log;
log = fopen("/tmp/file", "r");
while (!feof(log))
{
filepos++;
buffer[position]=fgetc(log);
if (buffer[position]==10)
{
senddata(buffer);
buffer="";
position=-1;
}
position++;
}
fclose(log);
while (1)
{
//while (taille_du_fichier==lenfile);
log = fopen("/tmp/log", "r");
fseek(log, filepos, SEEK_CUR);
while (!feof(log))
{
filepos++;
buffer[position]=fgetc(log);
if (buffer[position]==10)
{
senddata(buffer);
buffer="";
position=-1;
}
position++;
}
fclose(log);
}

By Psykocrash
0
cs_hammedi Messages postés 1 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 24 février 2006
24 févr. 2006 à 00:37
Hammedi,etudiant en informatique
0
Rejoignez-nous