000
06.08.2004, 17:59 Uhr
Plutonium
|
Hallo, Ich habe zwei Anfängerfragen: Wie komme ich mit C++ an den Timestap auf einem Linux-System? Welche Header brauche ich dafür?
Wie kann ich mit C++ einen Daemon starten? Ich habe diesen Source auf http://pronix.de gefunden nur leider ist er in C und ich habe keine ahnung wie ich ihn in C++ schreiben soll
C++: |
#include <stdio.h> #include <unistd.h> #include <syslog.h> #include <sys/types.h>
#define CHILD 0 #define ERROR -1
void start_daemon(char *log_name, int facility) { int i; pid_t pid;
/*Elternprozeß beenden, somit haben wir einen Waisen dessen sie jetzt vorerst init annimmt*/ if((pid = fork()) != CHILD) exit(0); /*Unser Kindprozess wird zum Session-Führer. Mißlingt dies, kann der Fehler daran liegen das der Prozeß bereits Sessionführer ist */ if(setsid() == ERROR) { fprintf(stderr, "%s kann nicht Session-Führer werden!\n",log_name); exit(0); } /* Gründe für das Root-Wurzelverzeichnis: +core-Datei wird im aktuellen Arbeitsverzeichnis hinterlegt +Damit bei Beendigung mit umount das Dateisystem sicher abgehängt werde kann */ chdir("/"); /*Damit wir nicht die Bitmaske vom Elternprozeß erben bzw. diese bleiben, stellen wir diese auf 0*/ umask(0); /*Wir schließen alle geöffneten Filedeskriptoren....*/ for(i=sysconf(_SC_OPEN_MAX); i>0; i--) close(i);
/*Da unser Dämonprozeß selbst kein Terminal für die Ausgabe hat....*/ openlog(log_name, LOG_PID, facility); }
int main(int argc, char **argv) { start_daemon("meinDaemon", LOG_USER); while(1); /*Enlossschleifen: Hier sollte nun der Code für den Daemon stehen, was immer er auch tun soll. Bei Fehlermeldungen Beispiesweise: if(dies_ist_Passiert) syslog(LOG_WARNING, "dies_ist_Passiert"); else if(das_ist_Passiert) syslog(LOG_INFO, "das_ist_Passiert");*/ return 0; }
|
|