Rechercher une page de manuel
fcntl
Langue: ru
Version: 2002-04-24 (openSuse - 09/10/07)
Section: 2 (Appels système)
Sommaire
éíñ
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
- õÄÁÌÉÔØ ÁÒÅÎÄÕ Ó ÕËÁÚÁÎÎÏÇÏ ÆÁÊÌÁ.
-
- 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> 2005Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre