IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Redirigé tail -f vers un programme C


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Redirigé tail -f vers un programme C
    Bonsoir,

    Je m'adresse à vous, je commence à en perdre mes cheveux!

    Situation :
    Je veux pouvoir traiter les logs d'iptables.
    Pour se faire, un tail -f /var/log/iptables.log me semble judicieux.
    Mais comment récupérer le contenu dans un programme C ?
    Le programme doit pouvoir tourner en permanence (tableau et autres en "mouvement").

    J'ai pensé utiliser les arguments du main (int main(int argc, char *argv[])
    ), mais il marche une fois et kouik!


    Une idée, parc'que là .. je calle.
    Merci.

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nonodev Voir le message
    Bonsoir,

    Je m'adresse à vous, je commence à en perdre mes cheveux!

    Situation :
    Je veux pouvoir traiter les logs d'iptables.
    Pour se faire, un tail -f /var/log/iptables.log me semble judicieux.
    Mais comment récupérer le contenu dans un programme C ?
    Le programme doit pouvoir tourner en permanence (tableau et autres en "mouvement").
    Sois tu fais un programme C qui va
    - ouvrir iptables.log (fopen)
    - lire iptables.log (fgets)
    - fermer iptables.log (fclose)
    Et ce de façon continue

    Sois tu fais un programme qui lit l'entrée standard stdin et tu l'utilises via un pipe. Exemple ton programme se nomme "toto" alors tu tapes "tail -f iptables.log |toto"

    Citation Envoyé par nonodev Voir le message
    J'ai pensé utiliser les arguments du main (int main(int argc, char *argv[])
    mais il marche une fois et kouik!
    Hum... es-tu au courant qu'il existe des structures de boucles while(), do...while(), for(...) ???

  3. #3
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    "Hum... es-tu au courant qu'il existe des structures de boucles while(), do...while(), for(...) ???"

    Je suis presque sûr que les arguments de main sont fixé au lancement du programme.

    La pipe me semble ere une bonne solutiona vec une boucle sur le flux de lecture standart.

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    oué d'accord, mais alors comment je récupère (dans quoi) la sortie du pipe ?

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    "Hum... es-tu au courant qu'il existe des structures de boucles while(), do...while(), for(...) ???"

    Je suis presque sûr que les arguments de main sont fixé au lancement du programme.
    Tout à fait. Mais quand il dit "ça ne marche qu'une fois" ben faut qu'il programme une boucle pour que son algo soit répété plusieurs fois !!!

    Citation Envoyé par nonodev Voir le message
    oué d'accord, mais alors comment je récupère (dans quoi) la sortie du pipe ?
    Dans stdin comme je l'ai déjà dit !!!

  6. #6
    Membre actif
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Points : 274
    Points
    274
    Par défaut
    si tu ne veux pas genre faire d'appel systeme pour ton pipe, tu peux le faire en C avec des dup2 par exemple, tu peux regarder de ce coté, mais ca compliquerait ta tache

Discussions similaires

  1. [Office 2003] Ajouter une bouton pointant vers un programme externe
    Par KalHadj-Nikov dans le forum Microsoft Office
    Réponses: 5
    Dernier message: 04/10/2006, 16h10
  2. Réponses: 3
    Dernier message: 02/07/2006, 13h17
  3. Réponses: 1
    Dernier message: 24/11/2005, 13h01
  4. Rediriger la sortie d'un programme vers un fichier
    Par olive_le_malin dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 23/11/2005, 09h55
  5. Comment rediriger la sortie vers /dev/null
    Par dclink dans le forum C
    Réponses: 4
    Dernier message: 24/06/2003, 18h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo