поэтому я использовал именованные каналы для IPC, но затем я потерял первое значение, отправленное одним процессом, потому что другой процесс еще не был запущен.Затем я перешел к использованию файла с одной строкой в качестве среднего хранилища.
Таким образом, файл обновляется, когда мое приложение записывает в него.Вот код для этого:
dmHubRead = fopen ("/tmp/file", "w");
if (!dmHubRead) {
log_error ("can't create /tmp/file: %m");
return 0;
}
fprintf (dmHubRead,
"value %02d:%02d:%02d;\n",
t->x, t->y, t->z);
fflush (dmHubRead);
fclose(dmHubRead);
Моя другая программа затем открывает файл и хочет прочитать первую строку довольно часто.Эта программа не закрывает файл между чтениями.Вот код этой программы:
if ((_file = fopen(FILE_PATH, "r")) < 0) {
DebugLogger::put(DebugLogger::Error, "Could not open file.", __FILE__, __LINE__);
}
...
size_t sz = 0;
char *line = NULL;
if(fsync(fileno(_file)) < 0) {
perror("fsync");
}
rewind(_file);
getline(&line, &sz, _file);
Так что моя проблема в том, что это не работает.Создает ли fopen в записывающей части новый файл каждый раз?Или в чем проблема и как ее можно решить?