Если я хочу использовать физический файл вместе с другими типами потоков, таких как сокет, я могу просто преобразовать дескриптор файла в файл дескриптора:Создать GNU C File Descriptor Без файла Дескриптор
#include <stdlib.h>
#include <stdio.h>
int main(void) {
FILE *f = fopen("uniquefilename.ext", "w");
int fd = fileno(f);
printf("%d\n", fd);
fclose(f);
return 0;
}
Does стандартная библиотека GNU обеспечивает способ получения дескриптора физического файла напрямую? Что-то эффект:
int fd = some_call("file_name.ext", "mode");
Кажется, мне нужно отметить, что я полностью в курсе того, как дескриптор не неявно связан с каким-либо конкретным файлом. Я вводил в заблуждение, когда писал «получить дескриптор физического файла»; то, что я должен был написать, это нечто вроде «создать дескриптор, позволяющий получить доступ к определенному физическому файлу».
Физический файл не имеет дескриптора файла. –
@KeithThompson хорошее горе – motoku
Что это значит? Дескриптор файла может быть связан с физическим файлом - в этом случае несколько файловых дескрипторов могут быть связаны (в рамках одного процесса) с данным физическим файлом. Если вызов 'open()' является тем, что вы ищете, он * выделяет * новый дескриптор файла и связывает его с указанным физическим файлом. –