У меня постоянно возникает ошибка сегментации при попытке доступа к структуре с именем Request, заполненной данными, считанными из канала. Что не так с моим кодом? Ошибка выдается здесь простым printf, пытающимся напечатать имя поля
ОПРЕДЕЛЕНИЕ КОНСТРУКЦИИ:
typedef struct
{
char code;
pid_t pid;
char *name;
char *object;
int id;
void *buffer;
size_t size;
} Request;
КОД ПИСАТЕЛЯ:
request.code = MANADDUSER; /* macro defining a char */
request.pid = getpid();
request.name = argument1; /* dinamycally allocated string */
request.object = NULL;
request.id = 0;
request.buffer = NULL;
request.size = 0;
if((fifoto = open(FIFOTOMMBOXD, O_WRONLY)) == -1) logMmboxman("error in opening FIFOTO\n", 1);
else logMmboxman("opened FIFOTO\n", 0);
if((write(fifoto, &request, sizeof(Request))) != sizeof(Request)) logMmboxman("error in writing FIFOTO\n", 1);
else logMmboxman("written on FIFOTO\n", 0);
close(fifoto);
КОД ЧИТАТЕЛЯ:
if((fifoto = open(FIFOTOMMBOXD, O_RDWR)) == -1) logMmboxd("error in opening FIFOTO\n", 1);
else logMmboxd("opened FIFOTO\n", 0);
if((read(fifoto, &request, sizeof(Request))) != sizeof(Request)) logMmboxd("error in reading FIFOTO\n", 1);
else logMmboxd("read from FIFOTO\n", 0);
close(fifoto);
printf("%s\n", request.name);