int filedes? системные вызовы чтение и запись
Кто-нибудь из вас, ребята, может сказать мне, что означает "int filedes"? http://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html
Я заметил, что могу вставить туда любой int, и он, кажется, работает, но я не знаю, для чего он...
Благодарю.
3 ответа
Это дескриптор файла. Смотрите http://en.wikipedia.org/wiki/File_descriptor. Поскольку он представляет собой смещение в таблице поиска файлов и каналов, может быть несколько дескрипторов, которые могут возвращать действительные данные. 0=stdin и 2=stderr будут существовать по умолчанию, или вы можете посмотреть на функцию open, чтобы создать свою собственную.
Самое первое предложение описания гласит: "файл, связанный с дескриптором открытого файла, fildes
Msgstr "Другими словами, это указывает на файл, с которого вы читаете. read
вызов функции работает независимо от того, какой дескриптор файла вы передаете, ваша программа не делает то, о чем вы думаете.
Где-то внутри ядра есть таблица, содержащая записи файловых дескрипторов для каждого процесса. Дескриптор файла - это структура, которая описывает состояние файла. Какую информацию имеет файловый дескриптор? Прежде всего, позиция, из которой может быть выполнена следующая операция чтения / записи. Затем режим доступа к файлу, указанный системным вызовом open. И, наконец, что не менее важно, структура данных, которая представляет информацию файла на диске. В *nix это структура inode. Здесь основной вопрос, на который нужно ответить: где находятся блоки файла на диске. Если у вас есть inode файла в памяти, вы можете быстро найти, где находится N-й блок файла (что означает, что вам не нужно каждый раз анализировать путь и сканировать каждый каталог в пути, чтобы найти инод).