[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