Unix Man (Справочное руководство)


FCNTL(2) - часть 3


[EBADF] Аргумент fildes не является корректным дескриптором открытого файла. [EINVAL] При операции cmd, равной F_DUPFD, значение аргумента arg либо отрицательно, либо больше или равно максимально допустимому для одного пользователя количеству дескрипторов открытых файлов. [EINVAL] При операции cmd, равной F_GETLK, F_SETLK или F_SETLKW, значение аргумента arg или информация, на которую указывает arg, некорректны. [EACCES] При операции cmd, равной F_SETLK, делается попытка блокировать на чтение (F_RDLCK) сегмент файла, заблокированный другим процессом на запись, либо попытка блокировать на запись (F_WRLCK) сегмент файла, заблокированный другим процессом на чтение или запись. [ENOLCK] При операции cmd, равной F_SETLK или F_SETLKW, превышается максимально допустимое системой количество блокировок. [EDEADLK] При операции cmd, равной F_SETLKW, ожидание возможности установить блокировку приводит к тупику. [EFAULT] При операции cmd, равной F_SETLK, аргумент arg указывает за пределы отведенного процессу адресного пространства. [EINTR] Во время выполнения системного вызова перехвачен сигнал. [ENOLINK] Дескриптор fildes ассоциирован с файлом на удаленном компьютере, связи с которым в данный момент нет.

СМ. ТАКЖЕ


, , , , , , , .

ДИАГНОСТИКА


При успешном завершении системного вызова в зависимости от операции cmd возвращаются следующие значения:

  • F_DUPFD

    Новый дескриптор файла.
  • F_GETFD

    Значение флага (определен только младший бит).
  • F_SETFD

    Значение, отличное от -1.
  • F_GETFL

    Значение флагов статуса файла.
  • F_SETFL

    Значение, отличное от -1.
  • F_GETLK

    Значение, отличное от -1.
  • F_SETLK

    Значение, отличное от -1.
  • F_SETLKW

    Значение, отличное от -1.

В случае ошибки возвращается -1, а переменной errno присваивается код ошибки.

ПРЕДОСТЕРЕЖЕНИЯ


Так как в будущем переменной errno будет присваиваться значение EAGAIN вместо EACCES в случае, если сегмент файла уже блокирован другим процессом, для достижения мобильности прикладных программ следует ожидать и обрабатывать оба кода ошибки.




Начало  Назад  Вперед