![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| UNIX voor Dummies Questions & Answers Als u niet zeker weet waar je een Unix-of Linux vraag, post het hier. Alle UNIX-en Linux beginners van harte welkom!! |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| Een programma voor het opsporen van de uitvoering van een ander programma | jiten_hegde | Hoog Niveau Programmering | 3 | 08-19-2008 06:26 |
| C + + How to use pijp () & vork () met stdin en stdout naar een ander programma | vvaidyan | Hoog Niveau Programmering | 2 | 05-16-2008 08:30 PM |
| Hoe duidelijk de inhoud van een pijp (stdin) nadat het is geschreven om een ander programma? | vvaidyan | Hoog Niveau Programmering | 10 | 05-15-2008 08:08 PM |
| Hoe te schrijven naar stdin van een ander programma (programma A -> [stdin] programma B) | vvaidyan | Hoog Niveau Programmering | 1 | 04-30-2008 02:44 PM |
| Hoe kan ik schrijf process_pool programma? | raken | Hoog Niveau Programmering | 4 | 06-17-2002 04:36 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Hoe te schrijven naar stdin van een ander programma (programma A -> [stdin] programma B)
Hoi,
Programma A: gebruik pijp () Ik kan het lezen van de stdout van Programma B (stdout kreeg via system () commando) in programmeren met: * Kind -> Dup2 (fd [1], STDOUT_FILENO); -> Execl ( "/ pad / PROGRAMMA B", "PROGRAM B", NULL); * Ouder -> Char line [100]; -> Lees (fd [0], lijn 100); Vraag: --------- Hoe te schrijven naar stdin van PROGRAMMA B vanaf PROGRAM A? * Moet ik gebruik een andere buis? * Hoe lees ik stdin in PROGRAM B? met behulp van cin? Thanks in advance, Vivek |
|
||||
|
/*
* Hier is hoe je het kan doen ... * Gebruik popen () * # include <sys/types.h> # include <fcntl.h> # include <stdio.h> # include <stdlib.h> # include <unistd.h> # define LEES 0 # define WRITE 1 pid_t popen2 (const char * command, int * infp, int * outfp) ( int p_stdin [2], p_stdout [2]; pid_t pid; if (pijp (p_stdin)! \u003d 0 | | pijp (p_stdout)! \u003d 0) return -1; pid \u003d fork (); if (pid <0) terugkeer pid; else if (pid \u003d\u003d 0) ( close (p_stdin [WRITE]); dup2 (p_stdin [Lees], lezen); close (p_stdout [Lees]); dup2 (p_stdout [WRITE], WRITE); execl ( "/ bin / sh", "sh", "-c", commando, NULL); perror ( "execl"); exit (1); ) if (infp \u003d\u003d NULL) close (p_stdin [WRITE]); anders * infp \u003d p_stdin [WRITE]; if (outfp \u003d\u003d NULL) close (p_stdout [Lees]); anders * outfp \u003d p_stdout [Lees]; terugkeer pid; ) / * * Nu in de belangrijkste ... infp zal de stdin (in file descriptor) * En outfp zal de stdout (out file descriptor) * Have fun * / int main (int argc, char ** argv) ( int infp, outfp; char buf [128]; if (popen2 ( "uw-program-B", & infp, & outfp) <\u003d 0) ( printf ( "Kan uw-programma exec-B \ n"); exit (1); ) memset (buf, 0x0, sizeof (buf)); write (INFP, "Z \ n", 2); write (INFP, "D \ n", 2); write (INFP, "A \ n", 2); write (INFP, "C \ n", 2); close (infp); lezen (outfp, buf, 128); printf ( "buf \u003d '% s' \ n", buf); return 0; ) |
|
||||
|
Merk ook op: popen is een manier deal - u kiezen om te schrijven of te lezen van een kind proces, zal popen niet laten u beiden op hetzelfde moment. Anders krijg je in meer interessante en geavanceerde interproces communicatie (IPC) programmering, zoals misschien pijpen.
|
|
||||
|
Citaat:
Code:
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);
Ik schreef en dan lees ik van het kind-proces "uw-program-B" |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|