[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [linux] execve dju ..



Petit ex pris de phpdonkey

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

#define LOG_DATEI "d_out.log"

int main()
{
    pid_t pid2,retval;
    int fd[2];
    char buffer[10] = "a"; // durch vergrößern des Arrays, kann eventuell
Systemleistung gespart werden.
    int n=0;
    int x=0;
    FILE *stream;

    if (pipe(fd)!=0)
    {
     printf("konnte pipe nicht öffnen\n");
     exit(0);
    }

Ici copy des descripteurs de fichier pour la partie executant la commande
( ici ./donkey )

    if ((retval=fork())==0)
    {
     dup2(fd[1], STDOUT_FILENO);
     dup2(fd[1], STDERR_FILENO);
     //dup2(fd[0], STDIN_FILENO);
     execlp("./donkey",NULL);
    }
    else if (retval >0)
    {
       n = 1;
       while (n > 0)
       {
         /*
         if(!x)
          {
            x++;
            strcpy(buffer, "?\n");
            n = write(fd[0], buffer, strlen(buffer));
          }
          */
         pid2=retval;
       n = read(fd[0], buffer, sizeof(buffer));
       buffer[n]=0x00;
       //printf(">%s",buffer);
          stream = fopen( LOG_DATEI, "a");

          if( stream == NULL )
          {
             fprintf( stdout, "error on fopen\n" );
             exit (-3);
          }
          fprintf(stream, "%s", buffer);
          fclose(stream);
     }
    }
    else
       printf("fork() nicht erfolgreich\n");

    return 1;
}

Hope this help,

Dominique Gallot

----- Original Message -----
From: "Jean-Francois Dive" <jef@linuxbe.org>
To: <linux@lists.unixtech.be>
Sent: Wednesday, February 06, 2002 12:58 PM
Subject: [linux] execve dju ..


> Salut a tous,
>
> Bon, j'ai un trou et j'arrive pas a retomber sur la chose:
>
> je veux executer une commande et recuperer l'output en C (C++, mais
> ca ne dois pas changer grand chose).
>
> Bon, d'un cote, je dois avoir un fork() puis execve(ma commande), mais
> comment lire l'output. J'imagine que je dois jouer avec les descripteurs
> mais.. bon.
>
> JeF
>
> --
> -> Jean-Francois Dive
> --> jef@linuxbe.org
> _______________________________________________
> Linux Mailing List
> Archives: http://unixtech.be/mailman/listinfo/linux
>
_______________________________________________
Linux Mailing List
Archives: http://unixtech.be/mailman/listinfo/linux