Hallo,
ich habe eine prinzipielle Frage zur named Pipe I/O unter Linux:
Angenommen ich habe zwei Prozesse (abgekürzt mal im pseudo Code):
Der erste Prozess schreibt also einen String in die pipe, während der zweite Prozess, der die Länge des Strings ja nicht kennen kann Zeilenweise aus dieser ausliest. Die Frage ist nun, was passiert, wenn der erste Prozess zügig fertig ist und nochmal gestartet wird, während der zweite noch fleissig liest? Blockiert der dann bis zum nächsten open() aufruf oder hab ich hier eine Race Condition?
ich habe eine prinzipielle Frage zur named Pipe I/O unter Linux:
Angenommen ich habe zwei Prozesse (abgekürzt mal im pseudo Code):
Code:
Prozess1:
char* message;
fd = open(pipe);
write(fd, message,strlen(message));
close(fd);
Code:
Prozess2:
char message[VIELPLATZ];
fd = open(pipe);
l = 1;
while(l)
{
l = read(fd, messages[++pos],1);
}
close(fd);
Der erste Prozess schreibt also einen String in die pipe, während der zweite Prozess, der die Länge des Strings ja nicht kennen kann Zeilenweise aus dieser ausliest. Die Frage ist nun, was passiert, wenn der erste Prozess zügig fertig ist und nochmal gestartet wird, während der zweite noch fleissig liest? Blockiert der dann bis zum nächsten open() aufruf oder hab ich hier eine Race Condition?