![]() |
|
|
google unix.com
|
|||||||
| Foros | Registro | Reglas de los Foros | Enlaces | Álbumes | Preguntas más frecuentes | Lista de miembros | Calendario | Búsqueda | Puestos de hoy | Marcar Foros Como Leídos |
| UNIX for Dummies Preguntas y Respuestas Si no está seguro de que para publicar un UNIX o Linux cuestión, puesto que aquí. Todos los novatos en Linux, UNIX y bienvenida! |
Más UNIX y Linux Foro Temas usted puede encontrar útiles
|
||||
| Hilo | Hilo para principiantes | Foro | Respuestas | Último mensaje |
| Un programa para rastrear la ejecución de otro programa | jiten_hegde | Programación de Alto Nivel | 3 | 08-19-2008 06:26 AM |
| C + + Cómo usar la cañería () y tenedor () con stdin y stdout a otro programa | vvaidyan | Programación de Alto Nivel | 2 | 05-16-2008 08:30 PM |
| Cómo borrar el contenido de un tubo (STDIN) después de que se escribe en otro programa? | vvaidyan | Programación de Alto Nivel | 10 | 05-15-2008 08:08 PM |
| ¿Cómo escribir en stdin de otro programa (programa A -> [stdin] programa B) | vvaidyan | Programación de Alto Nivel | 1 | 04-30-2008 02:44 PM |
| ¿Cómo puedo escribir process_pool programa? | golpear | Programación de Alto Nivel | 4 | 06-17-2002 04:36 AM |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
¿Cómo escribir en stdin de otro programa (programa A -> [stdin] programa B)
Hola,
Programa A: uso de tuberías () Soy capaz de leer el stdout de PROGRAMA B (stdout obtuvo a través de sistema () de comandos) en un programa usando: * Niño -> Dup2 (fd [1], STDOUT_FILENO); -> Execl ( "/ ruta / PROGRAMA B", "Programa B", NULL); * Padres -> Char line [100]; -> Leer (fd [0] de la partida, 100); Pregunta: --------- ¿Cómo escribir en stdin de PROGRAMA PROGRAMA B desde A? * Debo usar un tubo? * Cómo he leído en stdin PROGRAMA B? utilizando cin? Gracias de antemano, Vivek |
|
||||
|
/*
* Te indicamos cómo hacerlo ... * Usando popen () * # include <sys/types.h> # include <fcntl.h> # include <stdio.h> # include <stdlib.h> # include <unistd.h> # define LEER 0 # define ESCRIBIR 1 pid_t popen2 (const char * comando, int * INFP, int * outfp) ( int p_stdin [2], p_stdout [2]; pid_t pid; if (pipe (p_stdin)! \u003d 0 | | tubería (p_stdout)! \u003d 0) return -1; pid \u003d tenedor (); if (pid <0) pid retorno; else if (pid \u003d\u003d 0) ( estrecha (p_stdin [ESCRIBIR]); dup2 (p_stdin [READ], LEA); estrecha (p_stdout [LEER]); dup2 (p_stdout [ESCRIBIR], ESCRIBIR); execl ( "/ bin / sh", "sh", "-c", comando, NULL); perror ( "execl"); exit (1); ) if (INFP \u003d\u003d NULL) estrecha (p_stdin [ESCRIBIR]); algo más * \u003d p_stdin INFP [ESCRIBIR]; if (outfp \u003d\u003d NULL) estrecha (p_stdout [LEER]); algo más * outfp \u003d p_stdout [LEER]; pid retorno; ) / * * Ahora en los principales ... INFP se stdin (en el descriptor de archivo) * Y outfp será la stdout (descriptor de archivo a) * Divertirse * / int main (int argc, char ** argv) ( int INFP, outfp; char buf [128]; if (popen2 ( "su-programa-B", y INFP, y outfp) <\u003d 0) ( printf ( "No se puede ejecutar su programa-B \ n"); exit (1); ) memset (buf, 0x0, sizeof (buf)); escribir (INFP, "Z \ n", 2); escribir (INFP, "D \ n", 2); escribir (INFP, "A \ n", 2); escribir (INFP, "C \ n", 2); estrecha (INFP); leer (outfp, buf, 128); printf ( "buf \u003d '% s' \ n", buf); return 0; ) |
|
||||
|
También tenga en cuenta: es un popen tratar de una manera - que elija, ya sea para escribir o para leer desde un proceso hijo, popen no le permiten hacer las dos cosas al mismo tiempo. De lo contrario, llegar a más interesantes y avanzadas de la comunicación (IPC), la programación como tal vez las tuberías.
|
|
||||
|
Cita:
Código:
if (popen2("your-program-B", &infp, &outfp) <= 0)
{
printf("Unable to exec your-program-B\n");
exit(1);
}
memset (buf, 0x0, sizeof(buf));
/*
* writing to stdin here
*/
write(infp, "Z\n", 2);
write(infp, "D\n", 2);
write(infp, "A\n", 2);
write(infp, "C\n", 2);
close(infp);
/*
* reading stdout here
*/
read(outfp, buf, 128);
printf("buf = '%s'\n", buf);
|
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|