Мне было интересно узнать разницу между stdout
и STDOUT_FILENO
в Linux C.
После некоторой поисковой работы я делаю следующий вывод. Не могли бы вы помочь мне просмотреть его и исправить любую ошибку? Благодаря
-
stdout
относится к стандартным потокам ввода-вывода языка C; тип которого FILE * и определен в stdio.h -
STDOUT_FILENO
, обладающий типом int, определяется вunistd.h
. Это файловый дескриптор системы LINUX. Вunistd.h
он объясняется следующим образом:
The following symbolic constants shall be defined for file streams: STDERR_FILENO File number of stderr; 2. STDIN_FILENO File number of stdin; 0. STDOUT_FILENO File number of stdout; 1.
Итак, на мой взгляд, STDOUT_FILENO
принадлежит системному вызову и, в некоторой степени, как системный API. STDOUT_FILENO
может использоваться для описания любого устройства в системе.
stdout
находится на более высоком уровне (пользовательский уровень?) и фактически инкапсулирует детали STDOUT_FILENO
. stdout
имеет буфер ввода/вывода.
Что я понимаю об их различии. Любые комментарии или исправления приветствуются, спасибо.