Я ищу тип файлового дескриптора без возможности блокировки в ядре. Я знаю, что могу использовать fstat(2)
, но fstat
также даст мне все виды метаданных (время доступа и т. Д.), Которые могут блокироваться в течение произвольного промежутка времени (особенно в сетевых файловых системах).
РЕДАКТИРОВАТЬ: Я ищу syscall для этого, порождение отдельного процесса недопустимо, потому что порождение процесса и чтение его результатов, конечно, не мгновенно.
Единственное, что мне нужно знать, это действительнодескриптор файла - это «файл» на диске (S_IFREG
, S_IFLNK
, S_IFDIR
) или нет. В качестве альтернативы, если бы я мог сказать, будет ли это сокет (S_IFSOCK
), fifo (S_IFIFO
) или символьное устройство (S_IFCHR
), это тоже подойдет.
Я уверен, что любойЯдро будет иметь эту информацию в свободном доступе, и мне интересно, можно ли ее отобразить в пользовательском пространстве без блокировки.
Переносное решение (по крайней мере, для MacOS и Linux) будет высоко оценено.
Спасибо!