UNIX / Linux IPC: Czytanie z potoku. Jak poznać długość danych w czasie wykonywania?

Mam proces potomny, który generuje dane wyjściowe o zmiennej długości, a następnie wysyła je do rodzica za pomocą rury półdupleksowej. W rodzicu, jak używać funkcji read ()? Ponieważ dane mogą mieć różną długość za każdym razem, jak mogę w czasie wykonywania znać rozmiar danych do wykonania dowolnego malloc () dla bufora? Czy można użyć funkcji fstat () w deskryptorze pliku potoku?

Wiem, że funkcja read () odczyta określoną liczbę bajtów, ale zwróci 0, jeśli koniec pliku (nie znak EOF) zostanie osiągnięty, zanim żądane bajty zostaną odczytane.

W szczególności używam Ubuntu GNU / Linux z jądrem 2.6.27-9.

Wszystkie przykłady w Advanced Programming Richarda Stevensa w środowisku UNIX określiły długość danych podczas zapisywania do potoku lub polegały na funkcji stdio.h fgets (). Ponieważ zależy mi na szybkości, chcę trzymać się z dala od używania stdio.h tak bardzo, jak to możliwe.

Czy będzie to koniecznie szybsze dzięki pamięci współdzielonej?

Dzięki, -Dhruv

questionAnswers(6)

yourAnswerToTheQuestion