Я хотел бы скопировать содержимое файла FILE*
(библиотека *.so
) в дескриптор файла, который я передам другой функции.Я прочитал о fileno()
, но, похоже, он не работает должным образом.Кто-нибудь может дать мне хитрость, чтобы сделать это?
Вот мой код:
int takeFromDisk(char *file){
int shm_fd;
shm_fd = open_ramfs(); // Give me a file descriptor to memory
printf("[+] File Descriptor Shared Memory created!\n");
FILE *fichier = fopen(file, "r");
fclose(fichier);
return(shm_fd);
}
И функция, которую я использую для получения моего файлового дескриптора:
int open_ramfs(void) {
int shm_fd;
//If we have a kernel < 3.17
// We need to use the less fancy way
if (kernel_version() == 0) {
shm_fd = shm_open(SHM_NAME, O_RDWR | O_CREAT, S_IRWXU);
if (shm_fd < 0) { //Something went wrong :(
fprintf(stderr, "[-] Could not open file descriptor\n");
exit(-1);
}
}
// If we have a kernel >= 3.17
// We can use the funky style
else {
shm_fd = memfd_create(SHM_NAME, 1);
if (shm_fd < 0) { //Something went wrong :(
fprintf(stderr, "[- Could not open file descriptor\n");
exit(-1);
}
}
return shm_fd;
}
И код, который я пробовал:
int c;
while ((c = fgetc(fichier)) != EOF)
{
write(shm_fd, &c, sizeof(c));
}