問題があります。number:error_descriptionのような内容のファイルがあります。ここで、このファイルを共有メモリ (POSIX)に配置する必要があります。コンテンツが変更された場合は、 base-file に保存する必要があります。共有メモリ内のコンテンツを検索する必要があります (結果はメッセージ キューを介してクライアントに送信されます)。これをすべて実装するにはどうすればよいですか?最初に(fopen("my_file", "r"))を開く必要があると考えた後、共有メモリを作成してファイルを mmap する必要があります。誰かが私を助けることができますか?
編集:
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
#include <semaphore.h>
/*
* \ /tmp/errors -> Error File
*/
#define MSGQ_HANDLER "/error_handler"
#define PATH_TO_FILE "/tmp/errors"
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
int main(void) {
int fd = open(PATH_TO_FILE, O_RDWR);
struct stat file_stat;
fstat(fd, &file_stat);
printf("File size: %zd\n", file_stat.st_size);
char *byte_ptr = mmap(NULL, file_stat.st_size, PROT_READ | PROT_WRITE,
MAP_SHARED, fd, 0);
if(byte_ptr == MAP_FAILED){
perror("error:");
}
while(1){
printf("%s\n", byte_ptr);
if(byte_ptr)
exit(1);
}
return EXIT_SUCCESS;
}
これまでのところ、それは私が今持っているものです。行の作品を読んでください。内容を変更するにはどうすればよいですか?