Problem mit FAM

Post Reply
Message
Author
Linux12
Posts: 6
Joined: 27. Sep 2006 8:14

Problem mit FAM

#1 Post by Linux12 »

Tag

Also, ich hab mir hier von einem Thread so ein modifiziertes Programm reingezogen und ausprobiert. Es dient dazu, ein Directory zu überwachen (mit FAM) und dann wenn eine Datei geändert wird ein Script aufzurufen.
So weit so gut, es sollte funktionieren allerdings kann ich mit dem Kommando FAMopen() keine Verbindung zu fam herstellen.
Er gibt mir immer den Errorcode aus.

Könnt ihr mir vielleicht weiterhelfen?

Hier das Programm:

Code: Select all


code:


/*


 *   monitor.c -- monitor arbitrary file or directory


 *                using fam


 */





/* 


 * Modified by Tobias Kortkamp


 *


 * 


 */


 








#include <fam.h>


#include <stdio.h>


#include <stdlib.h>


#include <sys/stat.h>


#include <sys/select.h>


 


/* event_name&#40;&#41; - return printable name of fam event code */


 


void checkEvent&#40;int code, const char *filename&#41;


&#123;


/* Den selben Code unten kannst du mehrmals kopieren und entsprechend den Wert FAMChanged in eines der folgenden Sache ändern&#58;


FAMChanged -- Eine Datei wurde verändert


FAMDeleted -- Eine Datei wurde gelöscht


FAMCreated -- Eine Datei wurde erstellt


FAMMoved -- Datei wurde verschoben


*/


        if&#40;code == FAMChanged&#41; /* Eine Datei wurde verändert */


 &#123;


                system&#40;"pfad/zu/bash/skript"&#41;;


 &#125;


&#125;





void main&#40;int argc, char *argv&#91;&#93;&#41;


&#123;


 int i, nmon, rc, fam_fd;


 FAMConnection fc;


 FAMRequest *frp;


 struct stat status;


 FAMEvent fe;


 fd_set readfds;


 


 frp = malloc&#40;argc * sizeof *frp&#41;;


 if &#40;!frp&#41;


 &#123;


         perror&#40;"malloc"&#41;;


         exit&#40;1&#41;;


 &#125;


 


 /* Open fam connection */


 


 if &#40;&#40;FAMOpen&#40;&fc&#41;&#41; < 0&#41; 


 &#123;


  perror&#40;"fam"&#41;;


  exit&#40;1&#41;;


 &#125;


 


 /* Request monitoring for each program argument */


 for&#40;nmon = 0, i = 1; i < argc; i++&#41;


 &#123;


         if &#40;stat&#40;argv&#91; i&#93;, &status&#41; < 0&#41;


  &#123;


   perror&#40;argv&#91; i&#93;&#41;;


   status.st_mode = 0;


  &#125;


  if&#40;&#40;status.st_mode & S_IFMT&#41; == S_IFDIR&#41;


   rc = FAMMonitorDirectory&#40;&fc, argv&#91;i &#93;, frp + i, NULL&#41;;


  else


   rc = FAMMonitorFile&#40;&fc, argv&#91; i&#93;, frp + i, NULL&#41;;


  if&#40;rc < 0&#41;


  &#123;


   perror&#40;"FAMMonitor failed"&#41;;


   continue;


  &#125;


  nmon++;


 &#125;


 if&#40;!nmon&#41;


 &#123;


  fprintf&#40;stderr, "Nothing monitored.


"&#41;;


  exit&#40;1&#41;;


 &#125;


 


 /* Initialize select data structure */


 


 fam_fd = FAMCONNECTION_GETFD&#40;&fc&#41;;


 FD_ZERO&#40;&readfds&#41;;


 FD_SET&#40;fam_fd, &readfds&#41;;


 


 /* Loop forever. */


 


 while&#40;1&#41;


 &#123;


         if&#40;select&#40;fam_fd + 1, &readfds, NULL, NULL, NULL&#41; < 0&#41;


  &#123;


   perror&#40;"select failed"&#41;;


   exit&#40;1&#41;;


  &#125;


  if&#40;FD_ISSET&#40;fam_fd, &readfds&#41;&#41;


  &#123;


   if&#40;FAMNextEvent&#40;&fc, &fe&#41; < 0&#41;


   &#123;


    perror&#40;"FAMNextEvent"&#41;;


    exit&#40;1&#41;;


   &#125;


   checkEvent&#40;fe.code, fe.filename&#41;;


  &#125;


 &#125;


&#125;


Bitte um Hilfe!

mfg Alex

THREAD BITTE LÖSCHEN PROBLEM WURDE GELÖST

PDA

#2 Post by PDA »

Das sind die besten.

Post Reply