okay, do ludzi którzy (nie)kochają Systemów Operacyjnych :) [ANSI C] (i Linux plz)
mam sobie strukturę:
Kod :
typedef struct {
int rozmiar ; /*rozmiar bufora*/
int pocz ; /*poczatek*/
int koniec ;/*koniec*/
char buf[16]; /*miejsce na dane*/
} bufor;
która ma być w teorii czymś co się zwie bufor cykliczny.
no więc mam umieścić bufor cykliczny w pamięci dzielonej, i za jego pomocą zaimplementować problem producenta i konsumenta.
(dostęp do pamięci dzielonej sterowany semaforami (co nie jest problemem)).
konsument pobiera porcję danych z pliku, wrzuca do pamięci dzielonej, a konsument "siorbie dane", wyświetla co zassał, i wrzuca do innego pliku tekstowego ;D
to tak słowem wstępu.
a teraz moje pytanie/nia:
1) czy odczyt z pamięci dzielonej (dla programu konsument)da się zrobić za pomocą funckji read, która wygląda tak:
Kod :
#include <fcntl.h>
int read( int handle, void *buffer, int nbyte );
co by nie było, kombinowałem i to nie mało ale niestety albo wyswietlało mi jakieś śmieci z bufora.
2) czy wpisanie danych pobranych z pliku można zrobić za pomocą write() ?
Kod :
#include <fcntl.h>
int write( int handle, void *buffer, int nbyte );
żeby była jasność, jak skompiluję producenta z użyciem write() do pamieci wspódzielonej, to ok, niby pobiera, tworzy mi pamięć dzieloną i w teorii wrzuca do niej tekst.
niestety mój biedny linux lekko się "zapchał" (bo nie chciało mi sie usuwać segmentów pamięci dzielonej na bieżąco i dziwne rzeczy mi wyrzucał kompilator)
3)ktoś ma pomysł na jakiś inny bufor cykliczny? ten jest nieco ... niewygodny :)
Zakładki