nabend schön / morgen
ich möchte mit einer anwendung mehreren kindprozessen starten und stdout/stderr entgegennehmen. dazu habe ich pipe und fork verwendet.
zum testen habe ich dem kindprozess
zu tun gegeben. der vaterprozess ließt auf der pipe und gibt es aus
meine problem ist, dass in der ausgabe einträge doppelt gelesen/ausgegeben werden. Das lässt sich an der "icmp_seq=1" in jeder zweiten zeile ganz gut erkennen.
auch beendet der vaterprozess das read auf der pipe nicht, wenn der kindprozess fertig ist, und nichts mehr sendet.
hat jemand eine idee?
würde gerne auch verstehen, warum die pipe "geleert" wird!
bin für jeden ansatz dankbar
gruss
ich möchte mit einer anwendung mehreren kindprozessen starten und stdout/stderr entgegennehmen. dazu habe ich pipe und fork verwendet.
zum testen habe ich dem kindprozess
Code:
system("ping google.de");
Code:
while (read(p2c[0], readbuffer, sizeof(readbuffer)) > 0) {
sleep(1);
printf("%s", readbuffer);
fflush(stdout);
}
meine problem ist, dass in der ausgabe einträge doppelt gelesen/ausgegeben werden. Das lässt sich an der "icmp_seq=1" in jeder zweiten zeile ganz gut erkennen.
Code:
PING google.de (66.249.93.104) 56(84) bytes of data.
64 bytes from ug-in-f104.google.com (66.249.93.104): icmp_seq=1 ttl=245 time=69.3 ms
64 bytes from ug-in-f104.google.com (66.249.93.104): icmp_seq=2 ttl=245 time=68.4 ms
com (66.249.93.104): icmp_seq=1 ttl=245 time=69.3 ms
64 bytes from ug-in-f104.google.com (66.249.93.104): icmp_seq=3 ttl=245 time=68.3 ms
com (66.249.93.104): icmp_seq=1 ttl=245 time=69.3 ms
64 bytes from ug-in-f104.google.com (66.249.93.104): icmp_seq=4 ttl=245 time=66.3 ms
com (66.249.93.104): icmp_seq=1 ttl=245 time=69.3 ms
64 bytes from ug-in-f104.google.com (66.249.93.104): icmp_seq=5 ttl=245 time=68.1 ms
com (66.249.93.104): icmp_seq=1 ttl=245 time=69.3 ms
64 bytes from ug-in-f104.google.com (66.249.93.104): icmp_seq=6 ttl=245 time=69.5 ms
com (66.249.93.104): icmp_seq=1 ttl=245 time=69.3 ms
auch beendet der vaterprozess das read auf der pipe nicht, wenn der kindprozess fertig ist, und nichts mehr sendet.
hat jemand eine idee?
würde gerne auch verstehen, warum die pipe "geleert" wird!
bin für jeden ansatz dankbar
gruss