[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [linux] execve dju ..
Merci bcp.. entre temps, je suis retombe dessus: popen est ton amis car
il fork, exec et pipe :)
JeF
On Wed, Feb 06, 2002 at 02:50:58PM +0100, Dominique Gallot wrote:
> 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
> >
>
--
-> Jean-Francois Dive
--> jef@linuxbe.org
_______________________________________________
Linux Mailing List
Archives: http://unixtech.be/mailman/listinfo/linux