|
| Kommunikation mellem to programmer ? Fra : Digger |
Dato : 14-08-01 15:27 |
|
Hejsa
Nu har jeg siddet og kigget på nettet og læst i min bog, og jeg kan
umiddelbart ikke finde ud af om det er
muligt at sende kommandoer til et program som er startet op i ens eget
program ?? (dvs. kører parallelt (enten fork, eller execl)).
Jeg har siddet og kigget på pipes, men det forudsætter jo ligesom at man
selv har lavet begge programmer.
Det jeg har er et kommando baseret program, som skal modtage kommandoer
når det kører, og disse kommandoer
skal jeg sende via. mit program.
Det er forresten i Linux.
Er det nogle der har nogle links eller gode råd vedr. ovenstående ???
På forhånd tak for hjælpen
Dennis
| |
Jakob Stoklund Olese~ (14-08-2001)
| Kommentar Fra : Jakob Stoklund Olese~ |
Dato : 14-08-01 16:43 |
|
Digger <digger1@mail.tele.dk> writes:
> Nu har jeg siddet og kigget på nettet og læst i min bog, og jeg kan
> umiddelbart ikke finde ud af om det er
> muligt at sende kommandoer til et program som er startet op i ens eget
> program ?? (dvs. kører parallelt (enten fork, eller execl)).
>
> Jeg har siddet og kigget på pipes, men det forudsætter jo ligesom at man
> selv har lavet begge programmer.
Nej, du kan omdirigere stdin og stdout efter fork()
Uden error checking:
int fildes[2];
pipe(fildes);
int cpid = fork();
if (cpid==0) {
// child process replace stdin with pipe output
close(0);
dup(fildes[1]);
// close unused descriptors
close(fildes[0]);
close(fildes[1]);
exec("program");
}
else {
// parent proces - close pipe output
close(fildes[0]);
// send command to child program
write(fildes[0], "quit\n", 5);
// send EOF to child
close(fildes[0]);
// wait for child to terminate
wait();
}
Du kan gøre noget tilsvarende med stdout og stderr - du skal bruge en ny
pipe til hver.
Se iøvrigt ogsaa popen(), som dog ikke giver saa meget kontrol. (ala
system())
| |
Digger (15-08-2001)
| Kommentar Fra : Digger |
Dato : 15-08-01 14:16 |
|
Nej, du kan omdirigere stdin og stdout efter fork()
>
Det var lige hvad jeg skulle bruge
Men det giver dog et probl. efter at den har udført en kommando, går det
eksterne prog. helt amok.
Ved at kigge på det der bliver udskrevet, kan jeg se at det er 0A i hex
der bliver sendt.
Har du nogen ide om, hvordan det kan stoppes.
Dennis
| |
Digger (15-08-2001)
| Kommentar Fra : Digger |
Dato : 15-08-01 17:08 |
|
Jeg har løst det
Dennis
| |
|
|