/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
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

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste