Наиболее распространенные syscalls - читают (2), и запись (2) берет 3 параметра: дескриптор, буфер и длина. Число возвратов байтов на самом деле чтение или записанный. близко (2), очевидно, берет один параметр - дескриптор для закрытия.
Большинство syscalls возвращается-1 в случае ошибки и наборов errno
.
Все остальное я обычно читал в соответствующей странице справочника. Просто не забывайте команду: man 2 syscall_name
P.S.: у Вас есть введение (2)?
opendir
и readdir
самостоятельно работа над байтами. Они не работают и перекодирование.
Некоторые драйверы файловой системы могут наложить ограничения на последовательности байта. Например, HFS + нормализует имена файлов с помощью собственной схемы нормализации Unicode. Я ожидал бы форму, возвращенную readdir
работать при передаче opendir
, однако, столь как OP на форуме Ubuntu распараллеливают, что jw013 упомянутый, я подозреваю ошибку в HFS + драйвер. Это не единственная программа, которая смещена Хангылем на HFS +. Даже OSX, кажется, испытывает затруднения из-за нормализации Unicode.
strace ls
, можно непосредственно запустить с точки входа ядра:open
syscall. Универсальный код поддержки файловой системы передает все байты кроме пустого указателя и/
вдоль неизмененного. Это - только некоторые драйверы файловой системы, включаяhfsplus
, это преобразовывает имена файлов. – Gilles 'SO- stop being evil' 22.07.2012, 20:09