/ 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
pipes of file descriptor
Fra : Digger


Dato : 18-08-01 00:14

Hej igen.

Når jeg nu har redireceted stdio ved hjælp af pipes, er det så muligt,
at undersøge om en file descriptor,
har modtaget noget. Problemet er nemlig, at den anden process nogle
gange sender tekst uden brug af EOF,
hvilket vil sige, at det først bliver vist når jeg har udført en read()
i forbindelse med noget andet.
Her er et lille udsnit af koden.

-----------------------------------

for(;;){

gets(com);
strcat(com,"\n");
write(pd[1], com, strlen(com));
i = read(pi[0],stin,4096);
stin[i] ='\0';
printf("%i\n%s",i,stin);
}

------------------------------------

Jeg ville gerne kunne undersøg, om der bliver skrevet noget til pi[0] og
derefter udskrive det uden at
der altid skal skrives noget først.

Hvis der er nogle der har nogle forslag tager jeg gerne mod dem.


På forhånd mange tak

Dennis

 
 
Jakob Stoklund Olese~ (18-08-2001)
Kommentar
Fra : Jakob Stoklund Olese~


Dato : 18-08-01 15:20

Digger <digger1@mail.tele.dk> writes:

> Hej igen.
>
> Når jeg nu har redireceted stdio ved hjælp af pipes, er det så muligt,
> at undersøge om en file descriptor,
> har modtaget noget. Problemet er nemlig, at den anden process nogle
> gange sender tekst uden brug af EOF,
> hvilket vil sige, at det først bliver vist når jeg har udført en read()
> i forbindelse med noget andet.

Brug fcntl() til at sætte O_NONBLOCK flaget paa din fildescriptor. Saa
vil read() altid returnere med det samme. Hvis der ikke er nogen data,
returnerer den -1 med errno sat til EAGAIN. (Returværdien 0 betyder
stadig EOF)

Se ogsaa select(), hvis du vil vente paa, at der kommer data paa en af
amnge descriptors.

/stoklund

[hvordan overbeviser man xemacs om, at <compose> <a> <a> betyder å, og
ikke @?]

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste