P
pingu12
Jungspund
Hallo,
Habe mir gerade eine kurze Einführung nach C++ durchgelesen und gemerkt, dass ich aus Zeitgründen auf das eigenständige Lösen dieses Problems erstmal verzichten muss.
Ich möchte aus dem lighttpd (webserver) die accesslog-daten nicht in eine Datei schreiben, sondern in einem eigenen kleinen c++Prozess abfangen und verarbeiten. Letzteres sollte ich kurzfristig hinkriegen, das Abfangen allerdings macht mir noch Probleme.
Hier ein Auszug aus der mod_accesslog des lighttpd der meines Erachtens für den Start des Childs (also meinem Prozess) verantwortlich ist:
(Im Angang befindet sich der komplette Code)
Ich wäre sehr dankbar wenn mir jemand kurz z.B. mit einem Beispielcode erklärt wie ich nun in meinem Child-Prozess an die gewünschten Daten komme.
Gruß
Pingu
Habe mir gerade eine kurze Einführung nach C++ durchgelesen und gemerkt, dass ich aus Zeitgründen auf das eigenständige Lösen dieses Problems erstmal verzichten muss.
Ich möchte aus dem lighttpd (webserver) die accesslog-daten nicht in eine Datei schreiben, sondern in einem eigenen kleinen c++Prozess abfangen und verarbeiten. Letzteres sollte ich kurzfristig hinkriegen, das Abfangen allerdings macht mir noch Probleme.
Hier ein Auszug aus der mod_accesslog des lighttpd der meines Erachtens für den Start des Childs (also meinem Prozess) verantwortlich ist:
(Im Angang befindet sich der komplette Code)
Code:
#ifdef HAVE_FORK
/* create write pipe and spawn process */
int to_log_fds[2];
pid_t pid;
if (pipe(to_log_fds)) {
log_error_write(srv, __FILE__, __LINE__, "ss", "pipe failed: ", strerror(errno));
return HANDLER_ERROR;
}
/* fork, execve */
switch (pid = fork()) {
case 0:
/* child */
close(STDIN_FILENO);
dup2(to_log_fds[0], STDIN_FILENO);
close(to_log_fds[0]);
/* not needed */
close(to_log_fds[1]);
Ich wäre sehr dankbar wenn mir jemand kurz z.B. mit einem Beispielcode erklärt wie ich nun in meinem Child-Prozess an die gewünschten Daten komme.
Gruß
Pingu