fcntl

Autres langues

Langue: ru

Autres versions - même langue

Version: 2002-04-24 (openSuse - 09/10/07)

Section: 2 (Appels système)

éíñ

fcntl - ÍÁÎÉÐÕÌÑÃÉÉ Ó ÆÁÊÌÏ×ÙÍ ÄÅÓËÒÉÐÔÏÒÏÍ

ïâúïò


#include <unistd.h>

#include <fcntl.h>



int fcntl(int fd, int cmd);

int fcntl(int fd, int cmd, long arg);

int fcntl(int fd, int cmd, struct flock *lock);

ïðéóáîéå

fcntl ×ÙÐÏÌÎÑÅÔ ÏÄÎÕ ÉÚ ÒÁÚÌÉÞÎÙÈ ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÏÐÅÒÁÃÉÊ ÎÁÄ ÆÁÊÌÏ×ÙÍ ÄÅÓËÒÉÐÔÏÒÏÍ fd. üÔÁ ÏÐÅÒÁÃÉÑ ÏÐÒÅÄÅÌÑÅÔÓÑ ÓÏÄÅÒÖÉÍÙÍ ÁÒÇÕÍÅÎÔÁ cmd.

õÐÒÁ×ÌÅÎÉÅ close-on-exec

F_DUPFD
éÝÅÔ ÎÁÉÍÅÎØÛÉÊ ÄÏÓÔÕÐÎÙÊ ÎÏÍÅÒ ÆÁÊÌÏ×ÏÇÏ ÄÅÓËÒÉÐÔÏÒÁ, ËÏÔÏÒÙÊ ÂÏÌØÛÅ arg É ÄÅÌÁÅÔ ÅÇÏ ËÏÐÉÅÊ ÄÅÓËÒÉÐÔÏÒÁ fd. æÁËÔÉÞÅÓËÉ ÜÔÏ ÄÒÕÇÁÑ ÆÏÒÍÁ ×ÙÚÏ×Á dup2(2) ËÏÔÏÒÁÑ ÉÓÐÏÌØÚÕÅÔÓÑ Ó Ñ×ÎÙÍ ÕËÁÚÁÎÉÅÍ ÆÁÊÌÏ×ÏÇÏ ÄÅÓËÒÉÐÔÏÒÁ.

óÔÁÒÙÊ É ÎÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒÙ ÍÏÇÕÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÒÁ×ÎÏÚÎÁÞÎÏ. ïÎÉ ÒÁÚÄÅÌÑÀÔ ÏÄÎÉ É ÔÅ ÖÅ ÂÌÏËÉÒÏ×ËÉ, ÕËÁÚÁÔÅÌÉ ÎÁ ÐÏÚÉÃÉÉ × ÆÁÊÌÅ É ÆÌÁÇÉ; ÎÁÐÒÉÍÅÒ, ÅÓÌÉ ÐÏÚÃÉÑ × ÆÁÊÌÅ ÉÚÍÅÎÑÅÔÓÑ Ó ÐÏÍÏÝØÀ lseek ÄÌÑ ÏÄÎÏÇÏ ÉÚ ÄÅÓËÒÉÐÔÏÒÏ×, ÔÏ ÜÔÁ ÖÅ ÐÏÚÉÃÉÑ ÔÁËÖÅ ÂÕÄÅÔ ÉÚÍÅÎÅÎÁ É ÄÌÑ ÄÒÕÇÏÇÏ.

ïÄÎÁËÏ, ÄÁÎÎÙÅ Ä×Á ÄÅÓËÒÉÐÔÏÒÁ ÎÅ ÒÁÚÄÅÌÑÀÔ ÆÌÁÇ close-on-exec. æÌÁÇ close-on-exec × ËÏÐÉÉ ×ÙËÌÀÞÅÎ. üÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ÄÅÓËÒÉÐÔÏÒ ÎÅ ÂÕÄÅÔ ÚÁËÒÙÔ × ÓÌÕÞÁÅ ×ÙÚÏ×Á exec.

ðÒÉ ÕÓÐÅÛÎÏÍ ×ÙÐÏÌÎÅÎÉÉ ÜÔÏÊ ÏÐÅÒÁÃÉÉ, ×ÏÚ×ÒÁÝÁÅÔÓÑ ÎÏ×ÙÊ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ.

F_GETFD
þÉÔÁÅÔ ÆÌÁÇ close-on-exec. åÓÌÉ ÂÉÔ FD_CLOEXEC ÕÓÔÁÎÏ×ÌÅÎ × 0, ÔÏ ÆÁÊÌ ÂÕÄÅÔ ÏÓÔÁ×ÌÅÎ ÏÔËÒÙÔÙÍ ÐÒÉ ×ÙÚÏ×Å exec, × ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÏÎ ÂÕÄÅÔ ÚÁËÒÙÔ.
F_SETFD
õÓÔÁÎÁ×ÌÉ×ÁÅÔ ÆÌÁÇ close-on-exec × ÚÎÁÞÅÎÉÅ, ÚÁÄÁÎÎÏÅ ÂÉÔÏÍ FD_CLOEXEC ÁÒÇÕÍÅÎÔÁ arg.

æÌÁÇÉ ÓÏÓÔÏÑÎÉÑ ÆÁÊÌÁ

ìÀÂÏÊ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ ÉÍÅÅÔ ÎÅÓËÏÌØËÏ Ó×ÑÚÁÎÎÙÈ Ó ÎÉÍ ÆÌÁÇÏ×, ËÏÔÏÒÙÅ ÉÎÉÃÉÁÌÉÚÉÒÕÀÔÓÑ ×ÙÚÏ×ÏÍ open(2) É, ×ÏÚÍÏÖÎÏ, ÉÚÍÅÎÑÀÔÓÑ ÚÁÔÅÍ ×ÙÚÏ×ÏÍ fcntl(2). üÔÉ ÆÌÁÇÉ ÒÁÚÄÅÌÑÀÔÓÑ ÍÅÖÄÕ ËÏÐÉÑÍÉ (ÓÄÅÌÁÎÎÙÍÉ Ó ÐÏÍÏÝØÀ dup(2), fork(2), É ÄÒÕÇÉÈ ×ÙÚÏ×Ï×) ÜÔÏÇÏ ÖÅ ÆÁÊÌÏ×ÏÇÏ ÄÅÓËÒÉÐÔÏÒÁ.

üÔÉ ÆÌÁÇÉ É ÉÈ ÓÍÙÓÌ ÏÐÉÓÙ×ÁÀÔÓÑ ÎÁ ÓÔÒÁÎÉÃÅ ÒÕËÏ×ÏÄÓÔ×Á open(2).

F_GETFL
þÉÔÁÅÔ ÆÌÁÇÉ ÆÁÊÌÏ×ÏÇÏ ÄÅÓËÒÉÐÔÏÒÁ.
F_SETFL
õÓÔÁÎÁ×ÌÉ×ÁÅÔ ÞÁÓÔØ ÆÌÁÇÏ×, ÏÔÎÏÓÑÝÉÈÓÑ Ë ÓÏÓÔÏÑÎÉÀ ÆÁÊÌÁ, ÓÏÇÌÁÓÎÏ ÚÎÁÞÅÎÉÀ, ÕËÁÚÁÎÎÏÍÕ × ÁÒÇÕÍÅÎÔÅ arg. ïÓÔÁ×ÛÉÅÓÑ ÂÉÔÙ (ÒÅÖÉÍ ÄÏÓÔÕÐÁ, ÆÌÁÇÉ ÓÏÚÄÁÎÉÑ ÆÁÊÌÁ) × ÚÎÁÞÅÎÉÉ arg ÉÇÎÏÒÉÒÕÀÔÓÑ. ÷ Linux ÄÁÎÎÁÑ ËÏÍÁÎÄÁ ÍÏÖÅÔ ÉÚÍÅÎÑÔØ ÔÏÌØËÏ ÆÌÁÇÉ O_APPEND, O_NONBLOCK, O_ASYNC É O_DIRECT.

óÏ×ÍÅÓÔÎÁÑ (advisory) ÂÌÏËÉÒÏ×ËÁ

F_GETLK, F_SETLK É F_SETLKW ÉÓÐÏÌØÚÕÀÔÓÑ ÄÌÑ ÕÓÔÁÎÏ×ËÉ, ÓÎÑÔÉÑ É ÔÅÓÔÉÒÏ×ÁÎÉÑ ÓÕÝÅÓÔ×ÕÀÝÉÈ ÂÌÏËÉÒÏ×ÏË ÚÁÐÉÓÉ (ÔÁËÖÅ ÉÚ×ÅÓÔÎÙÈ ËÁË ÂÌÏËÉÒÏ×ËÉ ÓÅÇÍÅÎÔÁ ÆÁÊÌÁ ÉÌÉ ÏÂÌÁÓÔÉ ÆÁÊÌÁ). ôÒÅÔÉÊ ÁÒÇÕÍÅÎÔ lock Ñ×ÌÑÅÔÓÑ ÕËÁÚÁÔÅÌÅÍ ÎÁ ÓÔÒÕËÔÕÒÕ, ËÏÔÏÒÁÑ ÉÍÅÅÔ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ÓÌÅÄÕÀÝÉÅ ÐÏÌÑ (× ÐÒÏÉÚ×ÏÌØÎÏÍ ÐÏÒÑÄËÅ).



struct flock {

    ...

    short l_type;    /* ôÉÐ ÂÌÏËÉÒÏ×ËÉ: F_RDLCK,

                        F_WRLCK, F_UNLCK */

    short l_whence;  /* ëÁË ÉÎÔÅÒÐÒÅÔÉÒÏ×ÁÔØ l_start:

                        SEEK_SET, SEEK_CUR, SEEK_END */

    off_t l_start;   /* îÁÞÁÌØÎÏÅ ÓÍÅÝÅÎÉÅ ÄÌÑ ÂÌÏËÉÒÏ×ËÉ */

    off_t l_len;     /* ëÏÌÉÞÅÓÔ×Ï ÂÁÊÔ ÄÌÑ ÂÌÏËÉÒÏ×ËÉ */

    pid_t l_pid;     /* PID ÐÒÏÃÅÓÓÁ ÂÌÏËÉÒÕÀÝÅÇÏ ÎÁÛÕ ÂÌÏËÉÒÏ×ËÕ

                        (F_GETLK only) */

    ...

};

ðÏÌÑ l_whence, l_start É l_len ÜÔÏÊ ÓÔÒÕËÔÕÒÙ ÚÁÄÁÀÔ ÄÉÁÐÁÚÏÎ ÂÁÊÔ, ËÏÔÏÒÙÊ ÍÙ ÈÏÔÉÍ ÚÁÂÌÏËÉÒÏ×ÁÔØ. l_start - ÜÔÏ ÎÁÞÁÌØÎÏÅ ÓÍÅÝÅÎÉÅ ÄÌÑ ÂÌÏËÉÒÏ×ËÉ, ËÏÔÏÒÏÅ ÉÎÔÅÒÐÒÅÔÉÒÕÅÔÓÑ ËÁË: ÎÁÞÁÌÏ ÆÁÊÌÁ (ÅÓÌÉ ÚÎÁÞÅÎÉÅ l_whence ÕÓÔÁÎÏ×ÌÅÎÏ × SEEK_SET); ÔÅËÕÝÁÑ ÐÏÚÉÃÉÑ × ÆÁÊÌÅ (ÅÓÌÉ ÚÎÁÞÅÎÉÅ l_whence ÕÓÔÁÎÏ×ÌÅÎÏ × SEEK_CUR); ÉÌÉ ËÏÎÅà ÆÁÊÌÁ (ÅÓÌÉ ÚÎÁÞÅÎÉÅ l_whence ÕÓÔÁÎÏ×ÌÅÎÏ × SEEK_END). ÷ ÐÏÓÌÅÄÎÉÈ Ä×ÕÈ ÓÌÕÞÁÑÈ, l_start ÍÏÖÅÔ ÉÍÅÔØ ÏÔÒÉÃÁÔÅÌØÎÏÅ ÚÎÁÞÅÎÉÅ, ÐÒÅÄÏÓÔÁ×ÌÑÑ ÓÍÅÝÅÎÉÅ, ËÏÔÏÒÏÇÏ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÐÅÒÅÄ ÎÁÞÁÌÏÍ ÆÁÊÌÁ. l_len -ÜÔÏ ÎÅÏÔÒÉÃÁÔÅÌØÎÏÅ ÃÅÌÏÅ ÞÉÓÌÏ (ÎÏ ÓÍ. úáíåþáîéñ ÎÉÖÅ), ËÏÔÏÒÏÅ ÚÁÄÁ£Ô ËÏÌÉÞÅÓÔ×Ï ÂÁÊÔ, ËÏÔÏÒÙÅ ÂÕÄÕÔ ÚÁÂÌÏËÉÒÏ×ÁÎÙ. âÁÊÔÙ ÓÌÅÄÕÀÝÉÅ ÐÏÓÌÅ ËÏÎÃÁ ÆÁÊÌÁ ÍÏÇÕÔ ÂÙÔØ ÚÁÂÌÏËÉÒÏ×ÁÎÙ, ÎÏ ÜÔÏ ÎÅÌØÚÑ ÓÄÅÌÁÔØ ÄÌÑ ÂÁÊÔÏ×, ËÏÔÏÒÙÅ ÎÁÈÏÄÑÔÓÑ ÐÅÒÅÄ ÎÁÞÁÌÏÍ ÆÁÊÌÁ. úÎÁÞÅÎÉÅ 0 ÄÌÑ l_len ÉÍÅÅÔ ÓÐÅÃÉÁÌØÎÏÅ ÎÁÚÎÁÞÅÎÉÅ: ÂÌÏËÉÒÏ×ËÁ ×ÓÅÈ ÂÁÊÔÏ×, ÎÁÞÉÎÁÑ ÏÔ ÐÏÚÉÃÉÉ, ÚÁÄÁÎÎÏÊ l_whence É l_start ÄÏ ËÏÎÃÁ ÆÁÊÌÁ, ÎÅ ÚÁ×ÉÓÉÍÏ ÏÔ ÔÏÇÏ, ÎÁÓËÏÌØËÏ ×ÅÌÉË ÆÁÊÌ. ðÏÌÅ l_type ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÏ ÄÌÑ ÕËÁÚÁÎÉÑ ÔÉÐÁ ÂÌÏËÉÒÏ×ËÉ: ÞÔÅÎÉÅ (F_RDLCK) ÉÌÉ ÚÁÐÉÓØ (F_WDLCK). âÌÏËÉÒÏ×ËÕ ÎÁ ÞÔÅÎÉÅ (ÒÁÚÄÅÌÑÅÍÁÑ ÂÌÏËÉÒÏ×ËÁ) ÎÁ ÏÂÌÁÓÔØ ÆÁÊÌÁ ÍÏÖÅÔ ÕÄÅÒÖÉ×ÁÔØ ÌÀÂÏÅ ËÏÌÉÞÅÓÔ×Ï ÐÒÏÃÅÓÓÏ×, ÎÏ ÔÏÌØËÏ ÏÄÉÎ ÐÒÏÃÅÓÓ ÍÏÖÅÔ ÕÄÅÒÖÉ×ÁÔØ ÂÌÏËÉÒÏ×ËÕ ÎÁ ÚÁÐÉÓØ (ÜËÓËÌÀÚÉ×ÎÁÑ ÂÌÏËÉÒÏ×ËÁ). ìÀÂÁÑ ÜËÓËÌÀÚÉ×ÎÁÑ ÂÌÏËÉÒÏ×ËÁ ÉÓËÌÀÞÁÅÔ ×ÓÅ ÄÒÕÇÉÅ ÂÌÏËÉÒÏ×ËÉ, ËÁË ÒÁÚÄÅÌÑÅÍÙÅ ÔÁË É ÜËÓËÌÀÚÉ×ÎÙÅ. ïÄÉÎ ÐÒÏÃÅÓÓ ÍÏÖÅÔ ÕÄÅÒÖÉ×ÁÔØ ÔÏÌØËÏ ÏÄÉÎ ÔÉÐ ÂÌÏËÉÒÏ×ËÉ ÏÂÌÁÓÔÉ ÆÁÊÌÁ; ÅÓÌÉ ÐÒÏÉÓÈÏÄÉÔ ÎÏ×ÁÑ ÂÌÏËÉÒÏ×ËÁ ÎÁ ÕÖÅ ÚÁÂÌÏËÉÒÏ×ÁÎÎÕÀ ÏÂÌÁÓÔØ, ÔÏ ÓÕÝÅÓÔ×ÕÀÝÁÑ ÂÌÏËÉÒÏ×ËÁ ÐÒÅÏÂÒÁÚÕÅÔÓÑ × ÎÏ×ÙÊ ÔÉÐ ÂÌÏËÉÒÏ×ËÉ. (ôÁËÉÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ÍÏÇÕÔ ÐÒÉ×ÅÓÔÉ Ë ÒÁÚÂÉÅÎÉÀ, ÕÍÅÎØÛÅÎÉÀ ÉÌÉ ÓÒÁÓÔÁÎÉÀ Ó ÓÕÝÅÓÔ×ÕÀÝÅÊ ÂÌÏËÉÒÏ×ËÏÊ, ÅÓÌÉ ÄÉÁÐÁÚÏÎ ÂÁÊÔ, ÚÁÄÁÎÎÙÊ ÄÌÑ ÎÏ×ÏÊ ÂÌÏËÉÒÏ×ËÉ ÎÅÔÏÞÎÏ ÓÏ×ÐÁÄÁÅÔ Ó ÄÉÁÐÁÚÏÎÏÍ ÓÕÝÅÓÔ×ÕÀÝÅÊ ÂÌÏËÉÒÏ×ËÉ.)
F_SETLK
õÓÔÁÎÏ×ÉÔØ ÂÌÏËÉÒÏ×ËÕ (ËÏÇÄÁ l_type ÕÓÔÁÎÏ×ÌÅÎÏ × ÚÎÁÞÅÎÉÅ F_RDLCK ÉÌÉ F_WRLCK) ÉÌÉ ÓÎÑÔØ ÂÌÏËÉÒÏ×ËÕ (ËÏÇÄÁ l_type ÕÓÔÁÎÏ×ÌÅÎÏ × ÚÎÁÞÅÎÉÅ F_UNLCK) ÉÌÉ ÂÁÊÔÙ, ÚÁÄÁÎÎÙ Ó ÐÏÍÏÝØÀ ÐÏÌÅÊ l_whence, l_start É l_len ÓÔÒÕËÔÕÒÙ lock. åÓÌÉ ËÏÎÆÌÉËÔÕÀÝÁÑ ÂÌÏËÉÒÏ×ËÁ ÕÄÅÒÖÉ×ÁÅÔÓÑ ÄÒÕÇÉÍ ÐÒÏÃÅÓÓÏÍ, ÔÏ ÄÁÎÎÙÊ ×ÙÚÏ× ×ÅÒÎ£Ô -1 É ÕÓÔÁÎÏ×ÉÔ ÚÎÁÞÅÎÉÅ errno × EACCES ÉÌÉ EAGAIN.
F_SETLKW
åÓÌÉ ÕÓÔÎÁÏ×ÌÅÎ F_SETLK, ÎÏ ÄÌÑ ÆÁÊÌÁ ÕÄÅÒÖÉ×ÁÅÔÓÑ ËÏÎÆÌÉËÔÕÀÝÁÑ ÂÌÏËÉÒÏ×ËÁ, ÔÏ ÐÒÏÉÓÈÏÄÉÔ ÏÖÉÄÁÎÉÅ ÓÎÑÔÉÑ ÂÌÏËÉÒÏ×ËÉ. åÓÌÉ ×Ï ×ÒÅÍÑ ÏÖÉÄÁÎÉÑ ÐÏÓÔÕÐÉÌ ÓÉÇÎÁÌ, ÔÏ ÄÁÎÎÙÊ ×ÙÚÏ× ÐÒÅÒÙ×ÁÅÔÓÑ É (ÐÏÓÌÅ ×ÏÚ×ÒÁÔÁ ÉÚ ÏÂÒÁÂÏÔÞÉËÁ ÓÉÇÎÁÌÁ) ÉÚ ÎÅÇÏ ÐÒÏÉÓÈÏÄÉÔ ÎÅÍÅÄÌÅÎÎÙÊ ×ÏÚÒÁÔ (ÇÄÅ ×ÏÚ×ÒÁÝÁÅÍÏÅ ÚÎÁÞÅÎÉÅ ÕÓÔÁÎÏ×ÌÅÎÏ × -1, Á errno ÕÓÔÁÎÏ×ÌÅÎÏ × ÚÎÁÞÅÎÉÅ EINTR).
F_GETLK
ðÒÉ ×ÈÏÄÅ × ÜÔÏÔ ×ÙÚÏ×, lock ÏÐÉÓÙ×ÁÅÔ ÂÌÏËÉÒÏ×ËÕ, ËÏÔÏÒÕÀ ÍÙ ÄÏÌÖÎÙ ÂÙ ÕÓÔÁÎÏ×ÉÔØ ÎÁ ÆÁÊÌ. åÓÌÉ ÔÁËÁÑ ÂÌÏËÉÒÏ×ËÁ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎÁ, fcntl() ÐÏ ÆÁËÔÕ ÎÅ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ Å£, ÎÏ ×ÏÚ×ÒÁÝÁÅÔ F_UNLCK × ÐÏÌÅ l_type ÓÔÒÕËÔÕÒÙ lock É ÏÓÔÁ×ÌÑÅÔ ÄÒÕÇÉÅ ÐÏÌÑ ÓÔÒÕËÔÕÒÙ ÎÅÉÚÍÅΣÎÎÙÍÉ. åÓÌÉ ÏÄÎÁ ÉÌÉ ÂÏÌÅÅ ÎÅÓÏ×ÍÅÓÔÉÍÙÈ ÂÌÏËÉÒÏ×ÏË ÍÅÛÁÀÔ ÕÓÔÁÎÏ×ËÅ ÎÁÛÅÊ ÂÌÏËÉÒÏ×ËÉ, ÔÏ fcntl() ×ÏÚ×ÒÁÝÁÅÔ ÐÏÄÒÏÂÎÏÓÔÉ Ï ÏÄÎÏÊ ÉÚ ÜÔÉÈ ÂÌÏËÉÒÏ×ÏË × ÐÏÌÑÈ l_type, l_whence, l_start É l_len ÓÔÒÕËÔÕÒÙ lock É ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ l_pid × ÚÎÁÞÅÎÉÅ PID ÔÏÇÏ ÐÒÏÃÅÓÓÁ, ËÏÔÏÒÙÊ ÕÄÅÒÖÉ×ÁÅÔ ÂÌÏËÉÒÏ×ËÕ. äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÕÓÔÁÎÏ×ÉÔØ ÂÌÏËÉÒÏ×ËÕ ÎÁ ÞÔÅÎÉÅ, fd ÄÏÌÖÅÎ ÂÙÔØ ÏÔËÒÙÔ ÎÁ ÞÔÅÎÉÅ. äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÕÓÔÁÎÏ×ÉÔØ ÂÌÏËÉÒÏ×ËÕ ÎÁ ÚÁÐÉÓØ, fd ÄÏÌÖÅÎ ÂÙÔØ ÏÔËÒÙÔ ÎÁ ÚÁÐÉÓØ. þÔÏÂÙ ÕÓÔÁÎÏ×ÉÔØ ÏÂÁ ÔÉÐÁ ÂÌÏËÉÒÏ×ËÉ, ÄÅÓËÒÉÐÔÏÒ ÄÏÌÖÅÎ ÂÙÔØ ÏÔËÒÙÔ ÎÁ ÚÁÐÉÓØ É ÎÁ ÞÔÅÎÉÅ. ôÁËÖÅ, ËÁË É ÐÒÉ ÓÎÑÔÉÉ ÂÌÏËÉÒÏ×ËÉ ÞÅÒÅÚ Ñ×ÎÏÅ ÕËÁÚÁÎÉÅ F_UNLCK, ÂÌÏËÉÒÏ×ËÁ Á×ÔÏÍÁÔÉÞÅÓËÉ ÓÎÉÍÁÅÔÓÑ, ËÏÇÄÁ ÐÒÏÃÅÓÓ ÚÁ×ÅÒÛÁÅÔÓÑ ÉÌÉ ÅÓÌÉ ÏÎ ÚÁËÒÙ×ÁÅÔ ÌÀÂÏÊ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ, ÓÓÙÌÁÀÝÉÊÓÑ ÎÁ ÆÁÊÌ, ÎÁ ËÏÔÏÒÏÍ ÕÄÅÒÖÉ×ÁÅÔÓÑ ÂÌÏËÉÒÏ×ËÁ. üÔÏ ÐÌÏÈÏ: ÜÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ÐÒÏÃÅÓÓ ÍÏÖÅÔ ÐÏÔÅÒÑÔØ ÂÌÏËÉÒÏ×ËÉ ÎÁ ÆÁÊÌÁÈ ÔÉÐÁ /etc/passwd ÉÌÉ /etc/mtab, ËÏÇÄÁ ÐÏ ËÁËÏÊ-ÌÉÂÏ ÐÒÉÞÉÎÅ ÂÉÂÌÉÏÔÅÞÎÁÑ ÆÕÎËÃÉÑ ÐÒÏÉÚ×ÏÄÉÔ ÉÈ ÏÔËÒÙÔÉÅ, ÞÔÅÎÉÅ É ÚÁËÒÙÔÉÅ. âÌÏËÉÒÏ×ËÉ ÎÅ ÎÁÓÌÅÄÕÀÔÓÑ ÐÒÏÃÅÓÓÏÍ-ÐÏÔÏÍËÏÍ, ÓÏÚÄÁÎÎÙÍ ÞÅÒÅÚ fork(2), ÎÏ ÓÏÈÒÁÎÑÀÔÓÑ ÐÒÉ ×ÙÚÏ×Å execve(2). ðÏÓËÏÌØËÕ ÂÕÆÅÒÉÚÁÃÉÑ, ×ÙÐÏÌÎÑÅÔÓÑ ÞÅÒÅÚ ÂÉÂÌÉÏÔÅËÕ stdio(3), ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÂÌÏËÉÒÏ×ÏË Ó ÆÕÎËÃÉÑÍÉ × ÜÔÏÍ ÐÁËÅÔÅ ÎÕÖÎÏ ÉÚÂÅÇÁÔØ; ×ÍÅÓÔÏ ÜÔÉÈ ÆÕÎËÃÉÊ ÉÓÐÏÌØÚÕÊÔÅ read(2) É write(2).

ïÂÑÚÁÔÅÌØÎÁÑ (mandatory) ÂÌÏËÉÒÏ×ËÁ

(îÅ-POSIX.) ïÐÉÓÁÎÎÙÅ ×ÙÛÅ ÂÌÏËÉÒÏ×ËÉ ÍÏÇÕÔ ÂÙÔØ ÉÌÉ ÓÏ×ÍÅÓÔÎÙÅ ÉÌÉ ÏÂÑÚÁÔÅÌØÎÙÅ É ÐÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÀÔÓÑ ÓÏ×ÍÅÓÔÎÙÅ. þÔÏÂÙ ÉÓÐÏÌØÚÏ×ÁÔØ ÏÂÑÚÁÔÅÌØÎÙÅ ÂÌÏËÉÒÏ×ËÉ, ÏÎÉ ÄÏÌÖÎÙ ÂÙÔØ ÒÁÚÒÅÛÅÎÙ (Ó ÐÏÍÏÝØÀ ÏÐÃÉÉ "-o mand" × mount(8)) ÄÌÑ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ, ÓÏÄÅÒÖÁÝÅÊ ÆÁÊÌ, ËÏÔÏÒÙÊ ÄÏÌÖÅÎ ÂÙÔØ ÚÁÂÌÏËÉÒÏ×ÁÎ, Á ÔÁËÖÅ ÒÁÚÒÅÛÅÎÙ ÄÌÑ ÓÁÍÏÇÏ ÆÁÊÌÁ (Ó ÐÏÍÏÝØÀ ÚÁÐÒÅÝÅÎÉÑ ÐÒÁ× ÎÁ ×ÙÐÏÌÎÅÎÉÅ ÇÒÕÐÐÏÊ É ÕÓÔÁÎÏ×ËÉ set-GID ÂÉÔÁ × ÐÒÁ×ÁÈ ÄÏÓÔÕÐÁ Ë ÆÁÊÌÕ).

óÏ×ÍÅÓÔÎÙÅ ÂÌÏËÉÒÏ×ËÉ ÎÅ Ñ×ÌÑÀÔÓÑ ÐÒÉÎÕÄÉÔÅÌØÎÙÍÉ É ÐÏÌÅÚÎÙ ÔÏÌØËÏ ÍÅÖÄÕ ÓÏÔÒÕÄÎÉÞÁÀÝÉÍÉ ÐÒÏÃÅÓÓÁÍÉ. ïÂÑÚÁÔÅÌØÎÙÅ ÂÌÏËÉÒÏ×ËÉ Ñ×ÌÑÀÔÓÑ ÐÒÉÎÕÄÉÔÅÌØÎÙÍÉ ÄÌÑ ×ÓÅÈ ÐÒÏÃÅÓÓÏ×.

õÐÒÁ×ÌÅÎÉÅ ÓÉÇÎÁÌÁÍÉ

F_GETOWN, F_SETOWN, F_GETSIG É F_SETSIG ÉÓÐÏÌØÚÕÀÔÓÑ ÄÌÑ ÕÐÒÁ×ÌÅÎÉÑ ÓÉÇÎÁÌÁÍÉ ÄÏÓÔÕÐÎÏÓÔÉ ××ÏÄÁ/×Ù×ÏÄÁ:
F_GETOWN
ðÏÌÕÞÉÔØ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÒÏÃÅÓÓÁ ÉÌÉ ÇÒÕÐÐÕ ÐÒÏÃÅÓÓÁ, ËÏÔÏÒÙÅ × ÔÅËÕÝÉÊ ÍÏÍÅÎÔ ÐÒÉÎÉÍÁÀÔ ÓÉÇÎÁÌÙ SIGIO É SIGURG ÄÌÑ ÓÏÂÙÔÉÊ ÎÁ ÆÁÊÌÏ×ÏÍ ÄÅÓËÒÉÐÔÏÒÅ fd. çÒÕÐÐÙ ÐÒÏÃÅÓÓÏ× ×ÏÚ×ÒÁÝÁÀÔÓÑ × ×ÉÄÅ ÏÔÒÉÃÁÔÅÌØÎÙÈ ÚÎÁÞÅÎÉÊ.
F_SETOWN
õÓÔÁÎÏ×ÉÔØ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÒÏÃÅÓÓÁ ÉÌÉ ÇÒÕÐÐÕ ÐÒÏÃÅÓÓÁ, ËÏÔÏÒÙÅ ÂÕÄÕÔ ÐÒÉÎÉÍÁÔØ ÓÉÇÎÁÌÙ SIGIO É SIGURG ÄÌÑ ÓÏÂÙÔÉÊ ÎÁ ÆÁÊÌÏ×ÏÍ ÄÅÓËÒÉÐÔÏÒÅ fd. çÒÕÐÐÙ ÐÒÏÃÅÓÓÏ× ÚÁÄÁÀÔÓÑ × ×ÉÄÅ ÏÔÒÉÃÁÔÅÌØÎÙÈ ÚÎÁÞÅÎÉÊ. (F_SETSIG ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ, ÞÔÏÂÙ ÚÁÄÁÔØ ÄÒÕÇÏÊ ÓÉÇÎÁÌ ×ÍÅÓÔÏ SIGIO).

åÓÌÉ ×Ù ÕÓÔÁÎÏ×ÉÌÉ ÎÁ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ ÆÌÁÇ ÓÏÓÔÏÑÎÉÑ O_ASYNC (ÉÌÉ ÞÅÒÅÚ ÐÒÅÄÏÓÔÁ×ÌÅÎÉÅ ÜÔÏÇÏ ÆÌÁÇÁ × ×ÙÚÏ×Å open(2), ÉÌÉ ÉÓÐÏÌØÚÕÑ ËÏÍÁÎÄÕ F_SETFL ×ÙÚÏ×Á fcntl), ÔÏ ÓÉÇÎÁÌ SIGIO ÐÏÓÙÌÁÅÔÓÑ ×ÓÑËÉÊ ÒÁÚ, ËÏÇÄÁ ÄÌÑ ÄÁÎÎÏÇÏ ÆÁÊÌÏ×ÏÇÏ ÄÅÓËÒÉÐÔÏÒÁ ÓÔÁÎÏ×ÉÔÓÑ ×ÏÚÍÏÖÎÙÍ ××ÏÄ ÉÌÉ ×Ù×ÏÄ.

ðÒÏÃÅÓÓ ÉÌÉ ÇÒÕÐÐÁ ÐÒÏÃÅÓÓÁ, ÄÌÑ ÐÒÉ£ÍÁ ÓÉÇÎÁÌÁ ÍÏÇÕÔ ÂÙÔØ ×ÙÂÒÁÎÙ, ÉÓÐÏÌØÚÕÑ ËÏÍÁÎÄÕ F_SETOWN × ×ÙÚÏ×Å fcntl. åÓÌÉ ÆÁÊÌÏ×ÙÍ ÄÅÓËÒÉÐÔÏÒÏÍ Ñ×ÌÑÅÔÓÑ ÓÏËÅÔ, ÔÏ ÄÌÑ ÎÅÇÏ ÔÁËÖÅ ×ÙÂÉÒÁÅÔÓÑ ÐÏÌÕÞÁÔÅÌØ ÓÉÇÎÁÌÏ× SIGURG, ËÏÔÏÒÙÅ ÄÏÓÔÁ×ÌÑÀÔÓÑ, ËÏÇÄÁ ÎÁ ÓÏËÅÔ ÐÏÓÔÕÐÁÅÔ ÄÁÎÎÙÈ ÂÏÌØÛÅ, ÞÅÍ ÅÇÏ ÐÒÏÐÕÓËÎÁÑ ÓÐÏÓÏÂÎÏÓÔØ. (SIGURG ÐÏÓÙÌÁÅÔÓÑ ×Ï ×ÓÅÈ ÓÉÔÕÁÃÉÑÈ, ËÏÇÄÁ ×ÙÚÏ× select(2) ÇÏ×ÏÒÉÔ, ÞÔÏ ÓÏËÅÔ ÎÁÈÏÄÉÔÓÑ × ÓÏÓÔÏÑÎÉÉ "ÉÓËÌÀÞÉÔÅÌØÎÏÊ ÓÉÔÕÁÃÉÉ"). åÓÌÉ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÔÅÒÍÉÎÁÌØÎÏÍÕ ÕÓÔÒÏÊÓÔ×Õ, ÔÏ ÇÒÕÐÐÅ ÐÒÏÃÅÓÓÏ×, ËÏÔÏÒÙÅ ÒÁÂÏÔÁÀÔ Ó ÔÅÒÍÉÎÁÌÏÍ ÎÅ × ÆÏÎÏ×ÏÍ ÒÅÖÉÍÅ ÂÕÄÕÔ ÐÏÓÙÌÁÔØÓÑ ÓÉÇÎÁÌÙ SIGIO.

F_GETSIG
ðÏÌÕÞÉÔØ ÓÉÇÎÁÌ, ËÏÔÏÒÙÊ ÂÕÄÅÔ ÐÏÓÌÁÎ, ËÏÇÄÁ ÓÔÁÎÅÔ ×ÏÚÍÏÖÅÎ ××ÏÄ ÉÌÉ ×Ù×ÏÄ. úÎÁÞÅÎÉÅ 0 ÏÚÎÁÞÁÅÔ ÓÉÇÎÁÌ SIGIO. ìÀÂÏÅ ÄÒÕÇÏÅ ÚÎÁÞÅÎÉÅ (×ËÌÀÞÁÑ SIGIO) Ñ×ÌÑÅÔÓÑ ÄÒÕÇÉÍ ÓÉÇÎÁÌÁÍ, ÐÏÓÙÌÁÅÍÙÍ ×ÍÅÓÔÏ SIGIO É × ÜÔÏ ÓÌÕÞÁÅ, ÄÌÑ ÏÂÒÁÂÏÔÞÉËÁ ÓÉÇÎÁÌÁ ÄÏÓÔÕÐÎÁ ÄÏÐÏÌÎÉÔÅÌØÎÁÑ ÉÎÆÏÒÍÁÃÉÑ, ÅÓÌÉ ÏÎ ÂÙÌ ÕÓÔÁÎÏ×ÌÅÎ Ó SA_SIGINFO.
F_SETSIG
õÓÔÁÎÏ×ÉÔØ ÓÉÇÎÁÌ, ËÏÔÏÒÙÊ ÂÕÄÅÔ ÐÏÓÌÁÎ, ËÏÇÄÁ ÓÔÁÎÅÔ ×ÏÚÍÏÖÅÎ ××ÏÄ ÉÌÉ ×Ù×ÏÌ. úÎÁÞÅÎÉÅ 0 ÏÚÎÁÞÁÅÔ ÓÉÇÎÁÌ SIGIO. ìÀÂÏÅ ÄÒÕÇÏÅ ÚÎÁÞÅÎÉÅ (×ËÌÀÞÁÑ SIGIO) Ñ×ÌÑÅÔÓÑ ÄÒÕÇÉÍ ÓÉÇÎÁÌÁÍ, ÐÏÓÙÌÁÅÍÙÍ ×ÍÅÓÔÏ SIGIO É × ÜÔÏ ÓÌÕÞÁÅ, ÄÌÑ ÏÂÒÁÂÏÔÞÉËÁ ÓÉÇÎÁÌÁ ÄÏÓÔÕÐÎÁ ÄÏÐÏÌÎÉÔÅÌØÎÁÑ ÉÎÆÏÒÍÁÃÉÑ, ÅÓÌÉ ÏÎ ÂÙÌ ÕÓÔÁÎÏ×ÌÅÎ Ó SA_SIGINFO.

÷ ÓÌÕÞÁÅ ÉÓÐÏÌØÚÏ×ÁÎÉÑ F_SETSIG Ó ÎÅÎÕÌÅ×ÙÍ ÚÎÁÞÅÎÉÅÍ É ÕÓÔÁÎÏ×ËÏÊ SA_SIGINFO ÄÌÑ ÏÂÒÁÂÏÔÞÉËÁ ÓÉÇÎÁÌÁ (ÓÍ. sigaction(2)), ÏÂÒÁÂÏÔÞÉËÕ ÐÅÒÅÄÁ£ÔÓÑ ÄÏÐÏÌÎÉÔÅÌØÎÁÑ ÉÎÆÏÒÍÁÃÉÑ Ï ÓÏÂÙÔÉÑÈ ××ÏÄÁ/×Ù×ÏÄÁ × ÓÔÒÕËÔÕÒÅ siginfo_t. åÓÌÉ ÐÏÌÅ si_code ÐÏËÁÚÙ×ÁÅÔ, ÞÔÏ ÓÉÇÎÁÌÏÍ Ñ×ÌÑÅÔÓÑ SI_SIGIO, ÔÏ ÐÏÌÅ si_fd ÓÏÄÅÒÖÉÔ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ, ÁÓÓÏÃÉÉÒÏ×ÁÎÎÙÊ Ó ÓÏÂÒÙÔÉÅÍ ×Ù×ÏÄÁ/×Ù×ÏÄÁ. ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ, ÎÅ ÓÕÝÅÓÔ×ÕÅÔ ÎÉËÁËÏÇÏ ÍÅÈÁÎÉÚÍÁ, ÞÔÏÂÙ ÓÏÏÂÝÉÔØ Ó ËÁËÉÍ ÆÁÊÌÏ×ÙÍ ÄÅÓËÒÉÐÔÏÒÏÍ Ó×ÑÚÁÎ ÐÏÌÕÞÅÎÎÙÊ ÓÉÇÎÁÌ É ×Ù ÄÏÌÖÎÙ ÉÓÐÏÌØÚÏ×ÁÔØ (select(2), poll(2), read(2) Ó ÕÓÔÁÎÏ×ÌÅÎÎÙÍ ÆÌÁÇÏÍ O_NONBLOCK É Ô.Ä.) ÞÔÏÂÙ ÏÐÒÅÄÅÌÉÔØ ËÁËÏÊ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ ÄÏÓÔÕÐÅÎ ÄÌÑ ××ÏÄÁ/×Ù×ÏÄÁ.

ðÒÉ ×ÙÂÏÒÅ ÓÉÇÎÁÌÁ ÒÅÁÌØÎÏÇÏ ×ÒÅÍÅÎÉ (value >= SIGRTMIN) ËÁË ÏÐÉÓÁÎÏ × POSIX.1b, × ÏÞÅÒÅÄØ ÂÕÄÕÔ ÄÏÂÁ×ÌÑÔØÓÑ ÎÅÓËÏÌØËÏ ÓÏÂÙÔÉÊ ××ÏÄÁ ×Ù×ÏÄÁ, Ó ÔÅÍÉ ÖÅ ÎÏÍÅÒÁÍÉ ÓÉÇÎÁÌÏ×. (òÁÚÍÅÒ ÏÞÅÒÅÄÉ ÚÁ×ÉÓÉÔ ÏÔ ÄÏÓÔÕÐÎÏÊ ÐÁÍÑÔÉ). äÏÐÏÌÎÉÔÅÌØÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÂÕÄÅÔ ÄÏÓÔÕÐÎÁ ËÁË ÏÐÉÓÁÎÏ ×ÙÛÅ, ÅÓÌÉ ÄÌÑ ÏÂÒÁÂÏÔÞÉËÁ ÓÉÇÎÁÌÁ ÂÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎÏ SA_SIGINFO.

éÓÐÏÌØÚÕÑ ÜÔÉ ÍÅÈÁÎÉÚÍÙ, ÐÒÏÇÒÁÍÍÁ ÍÏÖÅÔ ÒÅÁÌÉÚÏ×ÁÔØ ÐÏÌÎÏÓÔØÀ ÁÓÉÎÈÒÏÎÎÙÊ ××ÏÄÁ/×Ù×ÏÄ ÂÅÚ ÉÓÐÏÌØÚÏ×ÁÎÉÑ × Ó×ÏÅÊ ÒÁÂÏÔÅ select(2) ÉÌÉ poll(2).

éÓÐÏÌØÚÏ×ÁÎÉÅ O_ASYNC, F_GETOWN, F_SETOWN Ñ×ÌÑÅÔÓÑ ÓÐÅÃÉÆÉÞÎÙÍ ÄÌÑ BSD É Linux. F_GETSIG É F_SETSIG Ñ×ÌÑÀÔÓÑ ÓÐÅÃÉÆÉÞÎÙÍÉ ÄÌÑ Linux. POSIX ÏÐÉÓÙ×ÁÅÔ ÁÓÉÎÈÒÏÎÎÙÊ ××ÏÄ/×Ù×ÏÄ É ÓÔÒÕËÔÕÒÕ aio_sigevent ÉÓÐÏÌØÚÕÅÍÕÀ ÄÌÑ ÓÈÏÄÎÙÈ ×ÅÝÅÊ; ËÏÔÏÒÙÅ ÔÁËÖÅ ÄÏÓÔÕÐÎÙ × Linux ËÁË ÞÁÓÔØ ÂÉÂÌÉÏÔÅËÉ GNU C (Glibc).

áÒÅÎÄÁ

F_SETLEASE É F_GETLEASE (× Linux 2.4 É ×ÙÛÅ) ÉÓÐÏÌØÚÕÀÔÓÑ (ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ) ÄÌÑ ÕÓÔÁÎÏ×ËÉ É ÐÏÌÕÞÅÎÉÑ ÔÅËÕÝÉÈ ÎÁÓÔÒÏÅË ×ÙÚÙ×ÁÀÝÅÇÏ ÐÒÏÃÅÓÓÁ, ÁÒÅÎÄÕÀÝÅÇÏ ÆÁÊÌ, ÎÁ ËÏÔÏÒÙÊ ÕËÁÚÙ×ÁÅÔ fd. áÒÅÎÄÁ ÆÁÊÌÁ ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ÔÁËÏÊ ÍÅÈÁÎÉÚÍ, ËÏÇÄÁ ÐÒÏÃÅÓÓ, ÕÄÅÒÖÉ×ÁÀÝÉÊ ÁÒÅÎÄÕ ("ÄÅÒÖÁÔÅÌØ ÁÒÅÎÄÙ") Õ×ÅÄÏÍÌÑÅÔÓÑ (ÞÅÒÅÚ ÄÏÓÔÁ×ËÕ ÓÉÇÎÁÌÁ), Ï ÔÏÍ, ÞÔÏ ÄÒÕÇÏÊ ÐÒÏÃÅÓÓ ("ËÏÎËÕÒÅÎÔ") ÐÙÔÁÅÔÓÑ ×ÙÐÏÌÎÉÔØ open(2) ÉÌÉ truncate(2) ÄÌÑ ÜÔÏÇÏ ÆÁÊÌÁ.
F_SETLEASE
õÓÔÁÎÁ×ÌÉ×ÁÅÔ ÉÌÉ ÕÄÁÌÑÅÔ ÁÒÅÎÄÕ ÆÁÊÌÁ, × ÓÏÏÔ×ÅÔÓÔ×ÉÉ ÓÏ ÃÅÌÙÍ ÚÎÁÞÅÎÉÅÍ, ÕÓÔÁÎÏ×ÌÅÎÎÙÍ × ÁÒÇÕÍÅÎÔÅ arg:
F_RDLCK
õÓÔÁÎÏ×ÉÔØ ÁÒÅÎÄÕ ÞÔÅÎÉÑ. üÔÏ ÐÒÉ×ÅÄ£Ô Ë ÇÅÎÅÒÁÃÉÉ Õ×ÅÄÏÍÌÅÎÉÑ, ËÏÇÄÁ ÄÒÕÇÏÊ ÐÒÏÃÅÓÓ ÏÔËÒÙ×ÁÅÔ ÕËÁÚÁÎÎÙÊ ÆÁÊÌ ÄÌÑ ÚÁÐÉÓÉ ÉÌÉ ÕÓÅËÁÅÔ ÅÇÏ.
F_WRLCK
õÓÔÁÎÏ×ÉÔØ ÁÒÅÎÄÕ ÚÁÐÉÓÉ. üÔÏ ÐÒÉ×ÅÄ£Ô Ë ÇÅÎÅÒÁÃÉÉ Õ×ÅÄÏÍÌÅÎÉÑ, ËÏÇÄÁ ÄÒÕÇÏÊ ÐÒÏÃÅÓÓ ÏÔËÒÙ×ÁÅÔ ÕËÁÚÁÎÎÙÊ ÆÁÊÌ (ÄÌÑ ÞÔÅÎÉÑ ÉÌÉ ÚÁÐÉÓÉ) ÉÌÉ ÕÓÅËÁÅÔ ÅÇÏ. áÒÅÎÄÁ ÚÁÐÉÓÉ ÍÏÖÅÔ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎÁ ÎÁ ÆÁÊÌ, ÔÏÌØËÏ ÅÓÌÉ ÜÔÏÔ ÆÁÊÌ ÎÅ ÏÔËÒÙÔ × ÜÔÏÔ ÍÏÍÅÎÔ ËÁËÉÍ-ÌÉÂÏ ÄÒÕÇÉÍ ÐÒÏÃÅÓÓÏÍ.
F_UNLCK
õÄÁÌÉÔØ ÁÒÅÎÄÕ Ó ÕËÁÚÁÎÎÏÇÏ ÆÁÊÌÁ.
ðÒÏÃÅÓÓ ÍÏÖÅÔ ÕÄÅÒÖÉÔ×ÁÔØ ÄÌÑ ÆÁÊÌÁ ÔÏÌØËÏ ÏÄÉÎ ÔÉÐ ÁÒÅÎÄÙ. áÒÅÎÄÁ ÍÏÖÅÔ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎÁ ÔÏÌØËÏ ÄÌÑ ÏÂÙÞÎÙÈ ÆÁÊÌÏ×. îÅÐÒÉ×ÅÌÅÇÉÒÏ×ÁÎÎÙÊ ÐÒÏÃÅÓÓ ÍÏÖÅÔ ÕÓÔÁÎÏ×ÉÔØ ÁÒÅÎÔÕ ÔÏÌØËÏ ÄÌÑ ÆÁÊÌÁ, Õ ËÏÔÏÒÏÇÏ UID ÓÏ×ÐÁÄÁÅÔ Ó UID ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÜÔÏÇÏ ÐÒÏÃÅÓÓÁ.
F_GETLEASE
ðÏËÁÚÙ×ÁÅÔ ËÁËÏÊ ÔÉÐ ÁÒÅÎÄÙ ÕÄÅÒÖÉ×ÁÅÔÓÑ ÄÌÑ ÆÁÊÌÁ, ÎÁ ËÏÔÏÒÙÊ ÕËÁÚÙ×ÁÅÔ fd É ×ÏÚ×ÒÁÝÁÅÔ ÏÄÎÏ ÉÚ ÚÎÁÞÅÎÉÊ F_RDLCK, F_WRLCK ÉÌÉ F_UNLCK, ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ ÐÏËÁÚÙ×ÁÀÝÉÈ, ÞÔÏ ×ÙÚÙ×ÁÀÝÉÊ ÐÒÏÃÅÓÓ ÕÄÅÒÖÉ×ÁÅÔ ÁÒÅÎÄÕ ÞÔÅÎÉÑ, ÚÁÐÉÓÉ ÉÌÉ ÞÔÏ ÁÒÅÎÄÙ ÎÅÔ. (ôÒÅÔÉÊ ÁÒÇÕÍÅÎÔ fcntl() ÐÒÉ ÜÔÏÍÕ ÏÐÕÓËÁÅÔÓÑ.)

ëÏÇÄÁ ËÏÎËÕÒÅÎÔ ×ÙÐÏÌÎÑÅÔ ×ÙÚÏ× open() ÉÌÉ truncate(), ËÏÔÏÒÙÊ ËÏÎÆÌÉËÔÕÅÔ Ó ÁÒÅÎÄÏÊ, ÕÓÔÁÎÏ×ÌÅÎÎÏÊ ÞÅÒÅÚ F_SETLEASE, ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ× ÂÌÏËÉÒÕÅÔÓÑ ÑÄÒÏÍ (ÚÁ ÉÓËÌÀÞÅÎÉÅÍ ÓÌÕÞÁÑ, ËÏÇÄÁ ÐÒÉ ×ÙÚÏ×Å open() ÕËÁÚÙ×ÁÅÔÓÑ ÆÌÁÇ O_NONBLOCK; × ÜÔÏÍ ÓÌÕÞÁÅ ÎÅÍÅÄÌÅÎÎÏ ×ÏÚÒÁÝÁÅÔÓÑ ÏÛÉÂËÁ EWOULDBLOCK). úÁÔÅÍ ÑÄÒÏ Õ×ÅÄÏÍÌÑÅÔ ÄÅÒÖÁÔÅÌÑ ÁÒÅÎÄÙ, ÏÔÐÒÁ×ÌÑÑ ÅÍÕ ÓÉÇÎÁÌ (ÐÏ ÕÍÏÌÞÁÎÉÀ SIGIO). äÅÒÖÁÔÅÌØ ÁÒÅÎÔÙ ÄÏÌÖÅÎ ÐÒÉ ÐÏÌÕÞÅÎÉÉ ÜÔÏÇÏ ÓÉÇÎÁÌÁ ×ÙÐÏÌÎÉÔØ ×ÓÅ ÎÅÏÂÈÏÄÉÍÙÅ ÄÅÊÓÔ×ÉÑ ÄÌÑ ÐÏÄÇÏÔÏ×ËÉ ÜÔÏÇÏ ÆÁÊÌÁ Ë ÉÓÐÏÌØÚÏ×ÁÎÉÀ ÄÒÕÇÉÍ ÐÒÏÃÅÓÓÏÍ (ÎÁÐÒÉÍÅÒ, ÓÂÒÏÓÉÔØ ÂÕÆÅÒÙ ËÜÛÁ) É ÚÁÔÅÍ ÕÄÁÌÉÔØ ÁÒÅÎÄÕ, ×ÙÐÏÌÎÉ× ÏÐÅÒÁÃÉÀ F_SETLEASE É ÕÓÔÁÎÏ×É× ÚÎÁÞÅÎÉÅ ÁÒÇÕÍÅÎÔÁ arg × F_UNLCK.

åÓÌÉ ÄÅÒÖÁÔÅÌØ ÁÒÅÎÄÙ ÎÅ ÏÓ×ÏÂÏÄÉÔ ÁÒÅÎÄÕ × ÔÅÞÅÎÉÉ ËÏÌÉÞÅÓÔ×Á ÓÅËÕÎÄ, ËÏÔÏÒÏÅ ÚÁÄÁ£ÔÓÑ × ÆÁÊÌÅ /proc/sys/fs/lease-break-time, Á ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ× ËÏÎËÕÒÅÎÔÁ ÏÓÔÁÎÅÔÓÑ ÂÌÏËÉÒÕÀÝÉÍ (ÔÏ, ÅÓÔØ ËÏÎËÕÒÅÎÔ ÎÅ ÕÓÔÁÎÏ×ÉÔ ÆÌÁÇ O_NONBLOCK ÄÌÑ ÓÉÓÔÅÍÎÏÇÏ ×ÙÚÏ×Á open() É ÜÔÏÔ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ× ÎÅ ÂÕÄÅÔ ÐÒÅÒ×ÁÎ ÏÂÒÁÂÏÔÞÉËÏÍ ÓÏÂÙÔÉÑ), ÔÏ ÑÄÒÏ ÐÒÉÎÕÄÉÔÅÌØÎÏ ÕÄÁÌÉÔ ÁÒÅÎÄÕ Õ ÐÒÏÃÅÓÓÁ ÄÅÒÖÁÔÅÌÑ ÁÒÅÎÄÙ.

ðÏÓÌÅ ÔÏÇÏ ËÁË ÁÒÅÎÄÁ ÓÎÑÔÁ ÄÅÒÖÁÔÅÌÅÍ ÁÒÅÎÄÙ ÉÌÉ ÐÒÉÎÕÄÉÔÅÌØÎÏ ÕÄÁÌÅÎÁ ÑÄÒÏÍ, ÑÄÒÏ ÓÎÉÍÁÅÔ ÂÌÏËÉÒÏ×ËÕ Ó ÓÉÓÔÅÍÎÏÇÏ ×ÙÚÏ×Á ÐÒÏÃÅÓÓÁ ËÏÎËÕÒÅÎÔÕ É ÒÁÚÒÅÛÁÅÔ ÐÒÏÄÏÌÖÉÔØ ÅÇÏ ÒÁÂÏÔÕ.

ðÏ ÕÍÏÌÞÁÎÉÀ, ÄÌÑ Õ×ÅÄÏÍÌÅÎÉÑ ÄÅÒÖÁÔÅÌÑ ÁÒÅÎÄÙ ÉÓÐÏÌØÚÕÅÔÓÑ ÓÉÇÎÁÌ SIGIO, ÎÏ ÅÇÏ ÍÏÖÎÏ ÉÚÍÅÎÉÔØ, ÉÓÐÏÌØÚÕÑ ËÏÍÁÎÄÕ F_SETSIG ÄÌÑ fcntl (). åÓÌÉ ×ÙÐÏÌÎÑÅÔÓÑ ËÏÍÁÎÄÁ F_SETSIG (ÄÁÖÅ ÎÁÚÎÁÞÁÑ ÓÉÇÎÁÌ SIGIO) É ÐÒÉ ÜÔÏÍ ÏÂÒÁÂÏÔÞÉË ÓÉÇÎÁÌÁ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ SA_SIGINFO, ÔÏ ÏÂÒÁÂÏÔÞÉË ÂÕÄÅÔ ÐÏÌÕÞÉÔ × ËÁÞÅÓÔ×Å ×ÔÏÒÏÇÏ ÁÒÇÕÍÅÎÔÁ ÓÔÒÕËÔÕÒÕ siginfo_t, × ËÏÔÏÒÏÊ ÐÏÌÅ si_fd ÂÕÄÅÔ ÓÏÄÅÒÖÁÔØ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ, ÄÌÑ ËÏÔÏÒÏÇÏ ÕÓÔÁÎÏ×ÌÅÎÁ ÁÒÅÎÄÁ É ËÏÔÏÒÏÍÕ ÐÙÔÁÅÔÓÑ ÐÏÌÕÞÉÔØ ÄÏÓÔÕÐ ÄÒÕÇÏÊ ÐÒÏÃÅÓÓ. (üÔÏ ÐÏÌÅÚÎÏ, ÅÓÌÉ ×ÙÚÙ×ÁÀÝÉÊ ÐÒÏÃÅÓÓ ÕÄÅÒÖÉ×ÁÅÔ ÁÒÅÎÄÕ ÎÁ ÎÅÓËÏÌØËÏ ÆÁÊÌÏ×).

õ×ÅÄÏÍÌÅÎÉÑ Ï ÉÚÍÅÎÅÎÉÉ ÆÁÊÌÁ É ËÁÔÁÌÏÇÁ

F_NOTIFY
(îÁÞÉÎÁÑ Ó Linux 2.4) ðÒÅÄÏÓÔÁ×ÌÑÅÔ Õ×ÅÄÏÍÌÅÎÉÅ, ËÏÇÄÁ ÉÚÍÅÎÑÅÔÓÑ ËÁÔÁÌÏÇ, ÎÁ ËÏÔÏÒÙÊ ÕËÁÚÙ×ÁÅÔ fd ÉÌÉ ÆÁÊÌÙ, ËÏÔÏÒÙÅ × Î£Í ÓÏÄÅÒÖÁÔÓÑ. óÏÂÙÔÉÑ, Ï ÎÁÓÔÕÐÌÅÎÉÉ ËÏÔÏÒÙÈ ÄÅÌÁÅÔÓÑ Õ×ÅÄÏÍÌÅÎÉÅ, ÚÁÄÁÀÔÓÑ × ÁÒÇÕÍÅÎÔÅ arg, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÂÉÔÏ×ÏÊ ÍÁÓËÏÊ, ÐÏÌÕÞÁÅÍÏÊ ÂÉÔÏ×ÙÍ ÓÌÏÖÅÎÉÅÍ (OR) ÏÄÎÏÊ ÉÌÉ ÂÏÌÅÅ ÓÌÅÄÕÀÝÉÈ ÍÁÓÏË:
íÁÓËÁ ïÐÉÓÁÎÉÅ (ÓÏÂÙÔÉÅ × ËÁÔÁÌÏÇÅ)
DN_ACCESS
DN_MODIFY æÁÊÌ ÂÙÌ ÉÚÍÅΣΠ(write, pwrite,
writev, truncate, ftruncate)
DN_CREATE æÁÊÌ ÂÙÌ ÓÏÚÄÁÎ (open, creat, mknod,
mkdir, link, symlink, rename)
DN_DELETE æÁÊÌ ÂÙÌ ÕÄẠ́Π(unlink, rename ×
ÄÒÕÇÏÊ ËÁÔÁÌÏÇ, rmdir)
DN_RENAME æÁÊÌ ÂÙÌ ÐÅÒÅÉÍÅÎÏ×ÁÎ ×ÎÕÔÒÉ ËÁÔÁÌÏÇÁ (rename)
DN_ATTRIB õ ÆÁÊÌÁ ÂÙÌ ÉÚÍÅΣΠÁÔÒÉÂÕÔ (chown, chmod, utime[s])

(þÔÏÂÙ ×ËÌÀÞÉÔØ ÏÐÒÅÄÅÌÅÎÉÑ ÜÔÉÈ ÍÁÓÏË, ÎÕÖÎÏ ÚÁÄÁÔØ ÍÁËÒÏÏÐÒÅÄÅÌÅÎÉÅ _GNU_SOURCE ÄÏ ÐÏÄËÌÀÞÅÎÉÑ <fcntl.h>.)

õ×ÅÄÏÍÌÅÎÉÑ Ï ÉÚÍÅÎÅÎÉÉ ÓÏÓÔÏÑÎÉÑ ËÁÔÁÌÏÇÁ ÏÂÙÞÎÏ ÏÄÎÏËÒÁÔÎÙÅ É ÐÒÉÌÏÖÅÎÉÅ ÄÏÌÖÎÏ ÐÅÒÅÒÅÇÉÓÔÒÉÒÏ×ÁÔØ ÕÓÔÁÎÏ×ËÕ Õ×ÅÄÏÍÌÅÎÉÊ, ÞÔÏÂÙ É ÄÁÌØÛÅ ÐÏÌÕÞÁÔØ ÉÈ. ïÄÎÁËÏ, ÅÓÌÉ × ÁÒÇÕÍÅÎÔ arg ÄÏÂÁ×ÉÔØ ÍÁÓËÕ DN_MULTISHOT, ÔÏ Õ×ÅÄÏÍÌÅÎÉÑ ÂÕÄÕÔ ÐÒÏÉÓÈÏÄÉÔØ ÄÏ ÔÅÈ ÐÏÒ, ÐÏËÁ ÎÅ ÂÕÄÕÔ Ñ×ÎÏ ÏÔÍÅÎÅÎÙ.

óÅÒÉÉ ÚÁÐÒÏÓÏ× F_NOTIFY ÎÁËÁÐÌÉ×ÁÀÔÓÑ, ÔÁËÉÍ ÏÂÒÁÚÏÍ ÚÁÐÒÏÓÙ ÎÁ Õ×ÅÄÏÍÌÅÎÉÑ, ÕËÁÚÙ×ÁÅÍÙÅ × arg ÂÕÄÕÔ ÄÏÂÁ×ÌÑÔØÓÑ Ë ÔÅÍ, ÞÔÏ ÕÖÅ ÕÓÔÁÎÏ×ÌÅÎÙ. þÔÏÂÙ ÚÁÐÒÅÔÉÔØ Õ×ÅÄÏÍÌÅÎÉÑ ÄÌÑ ×ÓÅÈ ÓÏÂÙÔÉÊ, ×ÙÐÏÌÎÉÔÅ ×ÙÚÏ× F_NOTIFY, × ËÏÔÏÒÏÍ ÚÎÁÞÅÎÉÅ arg ÕÓÔÁÎÏ×ÌÅÎÏ × 0.

õ×ÅÄÏÍÌÅÎÉÑ ×ÙÐÏÌÎÑÀÔÓÑ ÞÅÒÅÚ ÄÏÓÔÁ×ËÕ ÓÉÇÎÁÌÁ. ðÏ ÕÍÏÌÞÁÎÉÀ - ÜÔÏ SIGIO, ÎÏ ×Ù ÍÏÖÅÔÅ ÉÚÍÅÎÉÔØ ÅÇÏ, ÉÓÐÏÌØÚÕÑ ËÏÍÁÎÄÕ F_SETSIG ÄÌÑ ×ÙÚÏ×Á fcntl(). ÷ ÐÏÓÌÅÄÎÅÍ ÓÌÕÞÁÅ, ÏÂÒÁÂÏÔÞÉË ÓÉÇÎÁÌÁ ÐÏÌÕÞÉÔ × ËÁÞÅÓÔ×Å ×ÔÏÒÏÇÏ ÁÒÇÕÍÅÎÔÁ ÓÔÒÕËÔÕÒÕ siginfo_t (ÅÓÌÉ ÏÂÒÁÂÏÔÞÉË ÂÙÌ ÕÓÔÁÎÏ×ÌÅÎ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ SA_SIGINFO), Á ÐÏÌÅ si_fd × ÜÔÏÊ ÓÔÒÕËÔÕÒÅ ÂÕÄÅÔ ÓÏÄÅÒÖÁÔØ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ, ÄÌÑ ËÏÔÏÒÏÇÏ ÂÙÌÏ ÓÅÇÅÎÅÒÉÒÏ×ÁÎÏ Õ×ÅÄÏÍÌÅÎÉÅ (ÐÏÌÅÚÎÏ, ËÏÇÄÁ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ Õ×ÅÄÏÍÌÅÎÉÅ ÄÌÑ ÎÅÓËÏÌØËÉÈ ËÁÔÁÌÏÇÏ×).

ëÒÏÍÅ ÔÏÇÏ, ËÏÇÄÁ ÉÓÐÏÌØÚÕÅÔÓÑ DN_MULTISHOT, ÄÌÑ Õ×ÅÄÏÍÌÅÎÉÊ ÄÏÌÖÅÎ ÂÙ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎ ÓÉÇÎÁÌ ÒÅÁÌØÎÏÇÏ ×ÒÅÍÅÎÉ POSIX.1b, ÔÁË ÞÔÏ ÍÎÏÖÅÓÔ×ÅÎÎÙÅ Õ×ÅÄÏÍÌÅÎÉÑ ÍÏÇÕÔ ÂÙÔØ ÐÏÓÔÁ×ÌÅÎÙ × ÏÞÅÒÅÄØ.

÷ïú÷òáýáåíïå úîáþåîéå

ðÒÉ ÕÓÐÅÛÎÏÍ ×ÙÚÏ×Å, ×ÏÚ×ÒÁÝÁÅÍÏÅ ÚÎÁÞÅÎÉÅ ÚÁ×ÉÓÉÔ ÏÔ ÉÓÐÏÌØÚÏ×ÁÎÎÏÊ ÏÐÅÒÁÃÉÉ:
F_DUPFD
îÏ×ÙÊ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ.
F_GETFD
úÎÁÞÅÎÉÅ ÆÌÁÇÁ.
F_GETFL
úÎÁÞÅÎÉÅ ÆÌÁÇÁ.
F_GETOWN
úÎÁÞÅÎÉÅ, ÐÒÅÄÓÔÁ×ÌÑÀÝÅÅ ÓÏÂÏÊ ×ÌÁÄÅÌØÃÁ ÄÅÓËÒÉÐÔÏÒÁ.
F_GETSIG
úÎÁÞÅÎÉÅ ÓÉÇÎÁÌÁ, ÐÏÓÙÌÁÅÍÏÇÏ ËÏÇÄÁ ÓÔÁÎÏ×ÉÔÓÑ ×ÏÚÍÏÖÎÙÍ ÞÔÅÎÉÅ ÉÌÉ ÚÁÐÉÓØ ÉÌÉ ÎÏÌØ ÄÌÑ ÔÒÁÄÉÃÉÏÎÎÏÇÏ ÐÏ×ÅÄÅÎÉÑ SIGIO.
÷ÓÅ ÄÒÕÇÉÅ ËÏÍÁÎÄÙ. îÏÌØ.

÷ ÓÌÕÞÁÅ ÏÛÉÂËÉ, ×ÏÚ×ÒÁÝÁÅÔÓÑ -1 É ÚÎÁÞÅÎÉÅ errno ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÍ ÏÂÒÁÚÏÍ.

ïûéâëé

EACCES ÉÌÉ EAGAIN
ïÐÅÒÁÃÉÑ ÚÁÐÒÅÝÅÎÁ ÂÌÏËÉÒÏ×ËÁÍÉ, ËÏÔÏÒÙÅ ÕÄÅÒÖÉ×ÁÀÔÓÑ ÄÒÕÇÉÍÉ ÐÒÏÃÅÓÓÁÍÉ. éÌÉ, ÏÐÅÒÁÃÉÑ ÚÁÐÒÅÝÅÎÁ, ÐÏÔÏÍÕ ÞÔÏ ÄÌÑ ÜÔÏÇÏ ÆÁÊÌÁ ÄÒÕÇÏÊ ÐÒÏÃÅÓÓ ÉÓÐÏÌØÚÕÅÔ ÍÅÈÁÎÉÚÍ ÏÔÏÂÒÁÖÅÎÉÑ × ÐÁÍÑÔØ (memory-map).
EBADF
fd ÎÅ Ñ×ÌÑÅÔÓÑ ÏÔËÒÙÔÙÍ ÆÁÊÌÏ×ÙÍ ÄÅÓËÒÉÐÔÏÒÏÍ ÉÌÉ ËÏÍÁÎÄÁ ÂÙÌÁ F_SETLK ÉÌÉ F_SETLKW É ÒÅÖÉÍ ÏÔËÒÙÔÉÑ ÆÁÊÌÏ×ÏÇÏ ÄÅÓËÒÉÐÔÏÒÁ ÎÅ ÓÏ×ÐÁÄÁÅÔ Ó ÔÉÐÏÍ ÚÁÐÒÏÛÅÎÎÏÊ ÂÌÏËÉÒÏ×ËÉ.
EDEADLK
âÙÌÏ ÏÂÎÁÒÕÖÅÎÏ, ÞÔÏ ÕËÁÚÁÎÎÁÑ ËÏÍÁÎÄÁ F_SETLKW ÄÏÌÖÎÁ ×ÙÚÙ×ÁÔØ Í£ÒÔ×ÕÀ ÂÌÏËÉÒÏ×ËÕ (deadlock).
EFAULT
lock ÎÁÈÏÄÉÔÓÑ ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÏÓÔÕÐÎÏÇÏ ÁÄÒÅÓÎÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á.
EINTR
÷ÙÐÏÌÎÅÎÉÅ ËÏÍÁÎÄÙ F_SETLKW, ÂÙÌÏ ÐÒÅÒ×ÁÎÁ ÓÉÇÎÁÌÏÍ. éÌÉ ×ÙÐÏÌÎÅÎÉÅ ËÏÍÁÎÄ F_GETLK É F_SETLK, ÂÙÌÏ ÐÒÅÒ×ÁÎÏ ÓÉÇÎÁÌÏÍ ÐÅÒÅÄ ÔÅÍ ËÁË ÂÙÌÁ ÂÌÏËÉÒÏ×ËÁ ÂÙÌÁ ÐÒÏ×ÅÒËÁ ÉÌÉ ÕÓÔÁÎÏ×ÌÅÎÁ. âÏÌØÛÉÎÓÔ×Ï ÔÁËÉÈ ÏÛÉÂÏË ÓÌÕÞÁÅÔÓÑ ÐÒÉ ÂÌÏËÉÒÏ×ËÅ ÕÄÁÌ£ÎÎÏÇÏ ÆÁÊÌÁ (ÎÁÐÒÉÍÅÒ, ÂÌÏËÉÒÏ×ËÁ ÞÅÒÅÚ NFS), ÎÏ ÉÎÏÇÄÁ ÔÁËÏÅ ÍÏÖÅÔ ÓÌÕÞÁÔØÓÑ É ÎÁ ÌÏËÁÌØÎÙÈ ÆÁÊÌÁÈ.
EINVAL
äÌÑ F_DUPFD,ÚÎÁÞÅÎÉÅ arg ÏÔÒÉÃÁÔÅÌØÎÏÅ ÉÌÉ ÖÅ ÂÏÌØÛÅ, ÞÅÍ ÍÁËÓÉÍÁÌØÎÏ ×ÏÚÍÏÖÎÏÅ ÚÎÁÞÅÎÉÅ. äÌÑ F_SETSIG,ÚÎÁÞÅÎÉÅ arg ÎÅ ÓÏÄÅÒÖÉÔ ÄÏÐÕÓÔÉÍÙÊ ÎÏÍÅÒ ÓÉÇÎÁÌÁ.
EMFILE
äÌÑ F_DUPFD, ÐÒÏÃÅÓÓ ÄÏÓÔÉÇ ÍÁËÓÉÍÁÌØÎÏÇÏ ËÏÌÉÞÅÓÔ×Á ÏÔËÒÙÔÙÈ ÆÁÊÌÏ×ÙÈ ÄÅÓËÒÉÐÔÏÒÏ×.
ENOLCK
ïÔËÒÙÔÏ ÓÌÉÛËÏÍ ÍÎÏÇÏ ÂÌÏËÉÒÏ×ÏË ÓÅÇÍÅÎÔÏ×, ÔÁÂÌÉÃÁ ÂÌÏËÉÒÏ×ÏË ÚÁÐÏÌÎÅÎÁ ÉÌÉ ÏÛÉÂËÁ ÐÒÏÔÏËÏÌÁ ÕÄÁÌ£ÎÎÏÊ ÂÌÏËÉÒÏ×ËÉ (ÎÁÐÒÉÍÅÒ, ÐÒÉ ÂÌÏËÉÒÏ×ËÅ ÞÅÒÅÚ NFS).
EPERM
ðÏÐÙÔËÁ ÓÂÒÏÓÉÔØ ÆÌÁÇ O_APPEND ÎÁ ÆÁÊÌÅ, ËÏÔÏÒÙÊ ÏÔËÒÙÔ Ó ÁÔÒÉÂÕÔÏÍ ÔÏÌØËÏ ÄÌÑ ÄÏÂÁ×ÌÅÎÉÑ.

úáíåþáîéñ

ïÛÉÂËÉ, ×ÏÚ×ÒÁÝÁÅÍÙÅ dup2 ÏÔÌÉÞÁÀÔÓÑ ÏÔ ÔÅÈ, ÞÔÏ ×ÏÚ×ÒÁÝÁÀÔÓÑ ÐÒÉ F_DUPFD.

îÁÞÉÎÁÑ Ó ÑÄÒÁ 2.0, ÎÅ ÓÕÝÅÓÔ×ÕÅÔ ÒÁÚÎÉÃÙ ÍÅÖÄÕ ÔÉÐÁÍÉ ÂÌÏËÉÒÏ×ËÉ, ËÏÔÏÒÙÅ ÏÓÕÝÅÓÔ×ÌÑÅÔ flock(2) É fcntl(2).

POSIX 1003.1-2001 ÒÁÚÒÅÛÁÅÔ ÏÔÒÉÃÁÔÅÌØÎÏÅ ÚÎÁÞÅÎÉÅ l_len. (é ÅÓÌÉ ÏÎÏ ÏÔÒÉÃÁÔÅÌØÎÏÅ, ÉÎÔÅÒ×ÁÌ, ÏÐÉÓÙ×ÁÀÝÉÊ ÂÌÏËÉÒÏ×ËÕ ÐÏËÒÙ×ÁÅÔ l_start+l_len ÂÁÊÔ, ×ËÌÀÞÁÑ l_start-1.) üÔÏ ÐÏÄÄÅÒÖÉ×ÁÔÓÑ, ÎÁÞÉÎÁÑ Ó Linux 2.4.21 É 2.5.49.

îÅËÏÔÏÒÙÅ ÓÉÓÔÅÍÙ ÉÍÅÀÔ ÂÏÌØÛÅ ÐÏÌÅÊ × ÓÔÒÕËÔÕÒÅ struct flock ÎÁÐÒÉÍÅÒ ÔÁËÉÅ ËÁË l_sysid. ÷ÏÏÂÝÅ-ÔÏ, ÏÄÉÎ l_pid ÎÅ ÏÞÅÎØ-ÔÏ ÐÏÌÅÚÅÎ, ÅÓÌÉ ÐÒÏÃÅÓÓ, ÕÄÅÒÖÉ×ÁÀÝÉÊ ÂÌÏËÉÒÏ×ËÕ ÍÏÖÅÔ ÒÁÂÏÔÁÔØ ÎÁ ÄÒÕÇÏÊ ÍÁÛÉÎÅ.

óïïô÷åôóô÷éå óôáîäáòôáí

SVr4, SVID, POSIX, X/OPEN, BSD 4.3. ÷ ÓÔÁÎÄÁÒÔÅ POSIX.1 ÏÐÉÓÙ×ÁÀÔÓÑ ÔÏÌØËÏ F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETLK, F_SETLK É F_SETLKW. F_GETOWN É F_SETOWN × BSD, ÎÅ ÐÏÄÄÅÖÉ×ÁÀÔÓÑ × SVr4; F_GETSIG É F_SETSIG Ñ×ÌÑÀÔÓÑ ÓÐÅÃÉÆÉÞÎÙÍÉ ÄÌÑ Linux. F_NOTIFY, F_GETLEASE, É F_SETLEASE Ñ×ÌÑÀÔÓÑ ÓÐÅÃÉÆÉÞÎÙÍÉ ÄÌÑ Linux. (äÌÑ ÐÏÄËÌÀÞÅÎÉÑ ÜÔÉÈ ÆÌÁÇÏ× ÚÁÄÁ×ÁÊÔÅ ÍÁËÒÏÓ _GNU_SOURCE ÐÅÒÅÄ ÐÏÄËÌÀÞÅÎÉÅÍ ÚÁÇÏÌÏ×ÏÞÎÏÇÏ ÆÁÊÌÁ <fcntl.h>.) æÌÁÇÉ, ËÏÔÏÒÙÅ Ñ×ÌÑÀÔÓÑ ÄÏÐÕÓÔÉÍÙÍÉ ÄÌÑ F_GETFL/F_SETFL ÔÁËÖÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ ×ÙÚÏ×ÏÍ open(2) É ×ÁÒØÉÒÕÀÔÓÑ × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÏÐÅÒÁÃÉÏÎÎÙÈ ÓÉÓÔÅÍ; O_APPEND, O_NONBLOCK, O_RDONLY É O_RDWR ÏÐÉÓÙ×ÁÀÔÓÑ × POSIX.1. SVr4 ÐÏÄÄÅÒÖÉ×ÁÅÔ ÎÅÓËÏÌØËÏ ÄÒÕÇÉÈ ÏÐÃÉÊ É ÆÌÁÇÏ×, ËÏÔÏÒÙÅ ÚÄÅÓØ ÎÅ ÏÐÉÓÙ×ÁÀÔÓÑ.

SVr4 ÄÏËÕÍÅÎÔÉÒÕÅÔ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÕÓÌÏ×ÉÑ ÏÛÉÂÏË EIO, ENOLINK É EOVERFLOW.

óíïôòé ôáëöå

dup2(2), flock(2), lockf(3), open(2), socket(2) óÍ. ÔÁËÖÅ locks.txt, mandatory.txt É dnotify.txt in /usr/src/linux/Documentation.

ðåòå÷ïä

ðÅÒÅ×£Ì Ó ÁÎÇÌÉÊÓËÏÇÏ ÷ÉËÔÏÒ ÷ÉÓÌÏÂÏËÏ× <corochoone@perm.ru> 2005