Starten eines Prozesses im hintergrund in Linux mit C

Ich versuche, etwas zu tun, ein wenig seltsam hier. Ich brauche, um einen Prozess zu starten, logcat, von einem Dämon, der im hintergrund ausführen und drucken auf dem terminal ohne die Kontrolle von stdin. Es ist für die Protokollierung, so dass im Idealfall logcat druckt log-Meldungen, während immer noch so dass der Nutzer zur Eingabe standard-Befehle und parametrieren-Programme von der shell aus. Hier ist der code für den daemon habe ich so weit. Das Programm, logcat, startet und zeigt log-Nachrichten, aber ich kann nicht geben Sie alle Befehle, die in stdin, wie es scheint, dass das Programm die Kontrolle über stdin.

int main ( int argc, char** argv, char** env )
{
    int fd;
    if ((fd = open("/dev/console", O_RDWR)) < 0) {
        fd = open("/dev/null", O_RDWR);
    }
    printf("THIS IS A TEST\n");
    dup2(1, fd);
    dup2(2, fd);

    pid_t childpid = fork();

    if(childpid == -1) {
        perror("Failed to fork, logcat not starting");
        return 1;
    }

    if(childpid == 0) {
        //this is the child, exec logcat
        setsid();
        int execReturn = execl("/system/bin/logcat", "logcat", (char *) 0);
    } else {
        //this is the parent do nothing
        close(fd);
        return 0;
    }
    close(fd);
     return 0;
}

Dank

InformationsquelleAutor Mike | 2010-08-04
Schreibe einen Kommentar