ຮຽນຮູ້ Linux Command Open

Synopsis

#include << A HREF = "file: /usr/include/sys/types.h"> sys / typesh> #include << A HREF = "file: /usr /include/sys/stath "> sys / stath> #include << A HREF = "file: /usr/include/fcntlh"> fcntlh> int open (const char * pathname , int flags ) int open (const char * pathname , int flags , mode_t mode ) int creat (const char * pathname , mode_t mode )

ລາຍລະອຽດ

ລະບົບ ເປີດ () ລະບົບ linux ຄໍາສັ່ງ ຖືກນໍາໃຊ້ເພື່ອປ່ຽນຊື່ເສັ້ນຊື່ເປັນຕົວລະບຸປະເພດໄຟລ໌ (ເປັນຕົວເລກເລັກນ້ອຍ, ບໍ່ແມ່ນຄວາມຫມາຍສໍາລັບການນໍາໃຊ້ໃນ I / O ຕໍ່ມາພ້ອມກັບ ອ່ານ , ຂຽນ , ແລະອື່ນໆ). ເມື່ອການໂທຖືກປະສົບຜົນສໍາເລັດ, ລາຍລະອຽດຂອງ ໄຟລ໌ທີ່ ສົ່ງກັບຄືນໄປບ່ອນຈະເປັນຕົວຊີ້ວັດໄຟລ໌ທີ່ຕໍ່າທີ່ສຸດທີ່ບໍ່ເປີດເຜີຍສໍາລັບຂະບວນການ. ໂທນີ້ສ້າງໄຟລ໌ເປີດໃຫມ່, ບໍ່ໄດ້ແບ່ງປັນກັບຂະບວນການອື່ນໆ. (ແຕ່ໄຟລ໌ທີ່ເປີດແບ່ງປັນອາດຈະເກີດຂື້ນໂດຍຜ່ານລະບົບການໂທລະຫັດຕ່ໍາ (2).) ລະບົບຄໍາອະທິບາຍໄຟລ໌ໃຫມ່ແມ່ນຍັງເປີດຢູ່ໃນຫນ້າທີ່ exec (ເບິ່ງ fcntl (2)). ການຊົດເຊີຍໄຟລ໌ແມ່ນຕັ້ງຢູ່ໃນຕອນເລີ່ມຕົ້ນຂອງໄຟລ໌.

ທຸງທຸງ ແມ່ນຫນຶ່ງໃນ O_RDONLY , O_WRONLY ຫຼື O_RDWR ເຊິ່ງຮຽກຮ້ອງໃຫ້ເປີດໄຟລ໌ອ່ານ, ຂຽນເສີຍໆ ຫຼື ອ່ານ / ຂຽນ, ຕາມລໍາດັບ, bitwise - ຫຼື 'd ດ້ວຍສູນຫຼືຫຼາຍກວ່າດັ່ງຕໍ່ໄປນີ້:

O_CREAT

ຖ້າໄຟລ໌ບໍ່ມີມັນຈະຖືກສ້າງຂຶ້ນ. ເຈົ້າຂອງ (ຜູ້ໃຊ້ ID) ຂອງໄຟລ໌ແມ່ນຖືກກໍານົດໃຫ້ ID ຜູ້ໃຊ້ປະສິດທິພາບຂອງຂະບວນການ. ການເປັນເຈົ້າຂອງກຸ່ມ (ກຸ່ມ ID) ແມ່ນຖືກກໍານົດໄວ້ໃນລະຫັດກຸ່ມຂອງລະບົບປະຕິບັດການຫຼືກັບ ID ກຸ່ມຂອງໂຟເດີແມ່ (ອີງຕາມປະເພດຂອງລະບົບໄຟລ໌ແລະຕົວເລືອກ mount ແລະໂຫມດຂອງໂຟເດີແມ່, ເບິ່ງ, eg, mount ຕົວເລືອກ bsdgroups ແລະ sysvgroups ຂອງລະບົບໄຟ ext2, ດັ່ງທີ່ໄດ້ອະທິບາຍໃນ mount (8)).

O_EXCL

ເມື່ອນໍາໃຊ້ກັບ O_CREAT , ຖ້າໄຟລ໌ທີ່ມີຢູ່ແລ້ວມັນເປັນຂໍ້ຜິດພາດແລະການ ເປີດ ຈະລົ້ມເຫລວ. ໃນສະພາບການນີ້, ການເຊື່ອມໂຍງທີ່ມີສັນຍາລັກຢູ່, ໂດຍບໍ່ວ່າບ່ອນໃດທີ່ມັນຊີ້ໃຫ້ເຫັນ. O_EXCL ຖືກແຍກໃນ ລະບົບໄຟລ໌ NFS , ໂຄງການທີ່ອີງໃສ່ມັນສໍາລັບການປະຕິບັດວຽກງານ locking ຈະມີສະພາບການແຂ່ງຂັນ. ການແກ້ໄຂບັນຫາສໍາລັບການປະຕິບັດການລັອກໄຟລ໌ປະລໍາມະນູໂດຍໃຊ້ລັອກໄຟແມ່ນເພື່ອສ້າງໄຟລ໌ທີ່ເປັນເອກະລັກດຽວກັນກັບ fs (ເຊັ່ນ: ການເຊື່ອມໂຍງກັບ hostname ແລະ pid), ການນໍາໃຊ້ ການເຊື່ອມຕໍ່ (2) ເພື່ອສ້າງການເຊື່ອມຕໍ່ກັບລັອກໄຟລ໌. ຖ້າ ເຊື່ອມຕໍ່ () ກັບຄືນ 0, ລັອກຈະປະສົບຜົນສໍາເລັດ. ຖ້າບໍ່ດັ່ງນັ້ນ, ໃຫ້ໃຊ້ ສະຖິຕິ (2) ໃນໄຟລ໌ທີ່ບໍ່ຊ້ໍາກັນເພື່ອກວດສອບວ່າການເຊື່ອມຕໍ່ຂອງມັນຖືກເພີ່ມຂຶ້ນເປັນ 2, ໃນກໍລະນີທີ່ລັອກກໍ່ປະສົບຜົນສໍາເລັດ.

O_NOCTTY

ຖ້າ ເສັ້ນທາງ ຫມາຍເຖິງອຸປະກອນທີ່ຢູ່ປາຍຍອດ --- ເບິ່ງ tty (4) --- ມັນຈະບໍ່ກາຍເປັນບ່ອນຄວບຄຸມຂອງຂະບວນການເຖິງແມ່ນວ່າຂະບວນການບໍ່ມີຫນຶ່ງ.

O_TRUNC

ຖ້າໄຟລ໌ນີ້ມີຢູ່ແລ້ວແລະເປັນໄຟລ໌ປົກກະຕິແລ້ວຮູບແບບເປີດຈະຊ່ວຍໃຫ້ຂຽນ (ເຊົ່ນ O_RDWR ຫຼື O_WRONLY) ມັນຈະຖືກຕັດໄປຫາຄວາມຍາວ 0. ຖ້າໄຟລ໌ແມ່ນແຟ້ມອຸປະກອນ FIFO ຫຼື terminal, ທ່ອນ O_TRUNC ຈະຖືກຍົກເລີກ. ຖ້າບໍ່ດັ່ງນັ້ນ, ຜົນກະທົບຂອງ O_TRUNC ແມ່ນບໍ່ໄດ້ລະບຸ. (ໃນຫຼາຍ ລຸ້ນ Linux ມັນຈະຖືກລະເວັ້ນ, ໃນສະບັບອື່ນໆ, ມັນຈະສົ່ງຂໍ້ຜິດພາດຄືນ).

O_APPEND

ໄຟລ໌ແມ່ນເປີດຢູ່ໃນໂຫມດຜນວກກັນ. ກ່ອນທີ່ຈະ ຂຽນ ແຕ່ລະຕົວ, ຕົວຊີ້ຂອງແຟ້ມຈະຖືກຕັ້ງຢູ່ໃນຕອນທ້າຍຂອງໄຟລ໌, ຖ້າວ່າມີ lseek . O_APPEND ອາດຈະເຮັດໃຫ້ໄຟລ໌ທີ່ເສຍຫາຍໃນລະບົບໄຟລ໌ NFS ຖ້າຫຼາຍກວ່າຫນຶ່ງຂະບວນການປະກອບຂໍ້ມູນກັບໄຟລ໌ໃນເວລາດຽວກັນ. ນີ້ແມ່ນຍ້ອນວ່າ NFS ບໍ່ສະຫນັບສະຫນູນການຕິດຕໍ່ກັບໄຟລ໌, ດັ່ງນັ້ນແກ່ນລູກຄ້າຕ້ອງມີການຈໍາລອງມັນ, ເຊິ່ງບໍ່ສາມາດເຮັດໄດ້ໂດຍບໍ່ມີເງື່ອນໄຂເຊື້ອຊາດ.

O_NONBLOCK ຫຼື O_NDELAY

ເມື່ອເປັນໄປໄດ້, ໄຟລ໌ຈະຖືກເປີດໃນຮູບແບບທີ່ບໍ່ແມ່ນກ່ອງ. ບໍ່ມີການປະຕິບັດງານ ເປີດ ຫຼືການດໍາເນີນງານຕໍ່ໄປໃນລະບົບຄໍາອະທິບາຍໄຟລ໌ທີ່ຖືກສົ່ງກັບຈະເຮັດໃຫ້ຂະບວນການໂທຫາລໍຖ້າ. ສໍາລັບການຈັດການຂອງ FIFOs (ຊື່ທໍ່), ເບິ່ງຍັງ fifo (4). ຮູບແບບນີ້ບໍ່ຈໍາເປັນຕ້ອງມີຜົນຕໍ່ໄຟລ໌ອື່ນນອກເຫນືອຈາກ FIFOs.

O_SYNC

ໄຟລ໌ແມ່ນເປີດສໍາລັບ I / O ທີ່ສົມບູນແບບ. ທຸກລາຍການກ່ຽວກັບລາຍລະອຽດຂອງໄຟລ໌ທີ່ຜົນໄດ້ຮັບຈະຕັນຂະບວນການໂທຈົນກ່ວາຂໍ້ມູນໄດ້ຖືກຂຽນໄວ້ໃນຮ່າງກາຍ. ເບິ່ງ RESTRICTIONS ຂ້າງລຸ່ມນີ້, ເຖິງແມ່ນວ່າ.

O_NOFOLLOW

ຖ້າ ເສັ້ນທາງ ເປັນເສັ້ນທາງສັນຍາລັກ, ຫຼັງຈາກນັ້ນເປີດຈະລົ້ມເຫລວ. ນີ້ແມ່ນການຂະຫຍາຍ FreeBSD, ເຊິ່ງໄດ້ຖືກເພີ່ມເຂົ້າໃນ Linux ໃນສະບັບ 2.1.126. ການເຊື່ອມໂຍງສັນຍາລັກໃນສ່ວນປະກອບຂອງເສັ້ນຊື່ເກົ່າຈະສືບຕໍ່ຕິດຕາມ. headers ຈາກ glibc 2.0.100 ແລະຫຼັງຈາກນັ້ນປະກອບມີຄໍານິຍາມຂອງທຸງນີ້; kernels ກ່ອນ 2.1.126 ຈະບໍ່ສົນໃຈມັນຖ້າຖືກນໍາໃຊ້ .

O_DIRECTORY

ຖ້າ ເສັ້ນທາງ ບໍ່ແມ່ນໄດເລກະທໍລີ, ເຮັດໃຫ້ເປີດໃຫ້ລົ້ມເຫລວ. ຕົວຊີ້ວັດນີ້ແມ່ນ Linux ທີ່ສະເພາະແລະຖືກເພີ່ມໃນເວີຊັນ Kernel 2.1.126 ເພື່ອຫຼີກເວັ້ນບັນຫາການປະຕິເສດຂອງການບໍລິການຖ້າ OPendir (3) ຖືກເອີ້ນໃນອຸປະກອນ FIFO ຫຼື tape ແຕ່ບໍ່ຄວນໃຊ້ພາຍນອກການດໍາເນີນການ opendir ທີ່ຢູ່

O_DIRECT

ພະຍາຍາມຫຼຸດຜ່ອນຜົນກະທົບຂອງຕົວທ່ອງເວັບຂອງ I / O ກັບແລະຈາກໄຟລ໌ນີ້. ໂດຍທົ່ວໄປນີ້ຈະລົດລົງການປະຕິບັດແຕ່ມັນມີປະໂຫຍດໃນສະຖານະການພິເສດເຊັ່ນເມື່ອຄໍາຮ້ອງສະຫມັກເຮັດຫນ້າທີ່ຂອງຕົວເອງ. ໄຟລ໌ I / O ແມ່ນເຮັດໂດຍກົງກັບ / ຈາກສະຖານທີ່ຂອງຜູ້ໃຊ້ທີ່ມີຄວາມຫນາແຫນ້ນ. I / O ແມ່ນ synchronous, ie, ໃນການສໍາເລັດຂອງການ ອ່ານ (2) ຫຼື ຂຽນ (2) ໂທລະບົບ, ຂໍ້ມູນແມ່ນການຮັບປະກັນທີ່ໄດ້ຮັບການໂອນ. ຂະຫນາດການໂອນແລະການປັບຕົວຂອງການບີບອັດຂອງຜູ້ໃຊ້ແລະການຊົດເຊີຍໄຟລ໌ຕ້ອງທັງຫມົດເປັນຈໍານວນຂອງຂະຫນາດບລັອກຕັນກະຂອງລະບົບໄຟລ໌.
ທຸງນີ້ແມ່ນສະຫນັບສະຫນູນໃນລະບົບທີ່ຄ້າຍຄືກັບ Unix; ສະຫນັບສະຫນູນໄດ້ຖືກເພີ່ມພາຍໃຕ້ Linux ໃນເວີຊັນ kernel 2.4.10.
ການໂຕ້ຕອບທີ່ຄ້າຍຄືກັນກ່ຽວກັບ semantically ສໍາລັບອຸປະກອນຕັນແມ່ນອະທິບາຍໃນ ວັດຖຸດິບ (8).

O_ASYNC

ສ້າງສັນຍານ (SIGIO ໂດຍຄ່າເລີ່ມຕົ້ນແຕ່ວ່ານີ້ສາມາດຖືກປ່ຽນໂດຍຜ່ານ fcntl (2)) ເມື່ອເຂົ້າຫລືຜົນໄດ້ຮັບກັບຕົວລະອຽດຂອງແຟ້ມນີ້. ຄຸນນະສົມບັດນີ້ແມ່ນມີພຽງແຕ່ສໍາລັບການສະຖານທີ່, ປື້ມບັນຈຸ pseudo, ແລະ sockets. ເບິ່ງ fcntl (2) ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.

O_LARGEFILE

ລະບົບ 32 ບິດທີ່ສະຫນັບສະຫນູນລະບົບໄຟລ໌ຂະຫນາດໃຫຍ່, ອະນຸຍາດໃຫ້ໄຟລ໌ທີ່ມີຂະຫນາດບໍ່ສາມາດສະແດງໃນ 31 ບິດທີ່ຈະເປີດໄດ້.

ບາງທຸງທາງເລືອກເຫຼົ່ານີ້ສາມາດຖືກປ່ຽນແປງໂດຍໃຊ້ fcntl ຫຼັງຈາກໄຟລ໌ໄດ້ຖືກເປີດ.

ໂຫມດ ການໂຕ້ຖຽງລະບຸການອະນຸຍາດໃຫ້ໃຊ້ໃນກໍລະນີໄຟລ໌ໃຫມ່ຖືກສ້າງຂຶ້ນ. ມັນຖືກດັດແກ້ໂດຍ umask ຂອງຂະບວນການໃນທາງປົກກະຕິ: ການອະນຸຍາດຂອງໄຟລ໌ທີ່ສ້າງມາແມ່ນ (mode & umask) . ໃຫ້ສັງເກດວ່າຮູບແບບນີ້ໃຊ້ໄດ້ກັບການເຂົ້າເຖິງໃນອະນາຄົດຂອງໄຟລ໌ທີ່ສ້າງມາໃຫມ່; ການໂທ ເປີດ ທີ່ສ້າງໄຟລ໌ອ່ານເທົ່ານັ້ນກໍ່ອາດຈະກັບຄືນມາລາຍລະອຽດຂອງໄຟລ໌ອ່ານ / ຂຽນ.

ຄົງທີ່ສັນຍາລັກດັ່ງຕໍ່ໄປນີ້ແມ່ນໃຫ້ສໍາລັບ ຮູບແບບ :

S_IRWXU

00700 ຜູ້ໃຊ້ (ເຈົ້າຂອງໄຟລ໌) ໄດ້ອ່ານ, ຂຽນແລະປະຕິບັດການອະນຸຍາດ

S_IRUSR (S_IREAD)

00400 ຜູ້ໃຊ້ມີການອ່ານການອະນຸຍາດ

S_IWUSR (S_IWRITE)

00200 ຜູ້ໃຊ້ມີສິດຂຽນ

S_IXUSR (S_IEXEC)

00100 user has execute permission

S_IRWXG

00070 ກຸ່ມໄດ້ອ່ານ, ຂຽນແລະປະຕິບັດການອະນຸຍາດ

S_IRGRP

00040 ກຸ່ມໄດ້ອ່ານການອະນຸຍາດ

S_IWGRP

00020 ກຸ່ມໄດ້ຂຽນການອະນຸຍາດ

S_IXGRP

00010 ກຸ່ມໄດ້ປະຕິບັດການອະນຸຍາດ

S_IRWXO

00007 ຄົນອື່ນໄດ້ອ່ານ, ຂຽນແລະປະຕິບັດການອະນຸຍາດ

S_IROTH

00004 ຄົນອື່ນໄດ້ອ່ານການອະນຸຍາດ

S_IWOTH

00002 ຄົນອື່ນມີສິດຂຽນ

S_IXOTH

00001 ອື່ນໆໄດ້ດໍາເນີນການອະນຸຍາດ

ໂຫມດ ຕ້ອງຖືກລະບຸເມື່ອ O_CREAT ຢູ່ໃນ ປ້າຍ , ແລະຖືກລະເວັ້ນຖ້າບໍ່ດັ່ງນັ້ນ.

creat ແມ່ນເທົ່າກັບ ເປີດ ກັບ ປ້າຍທີ່ ເທົ່າກັບ O_CREAT | O_WRONLY | O_TRUNC .

VALUE RETURN

ເປີດ ແລະ ສ້າງ ຜົນຕອບແທນໃຫມ່ຂອງແຟ້ມຂໍ້ມູນຫລື -1 ຖ້າມີຂໍ້ຜິດພາດເກີດຂຶ້ນ (ໃນກໍລະນີທີ່ errno ຖືກຕັ້ງຄ່າຢ່າງຖືກຕ້ອງ). ໃຫ້ສັງເກດວ່າ ເປີດ ສາມາດເປີດໄຟອຸປະກອນພິເສດແຕ່ creat ບໍ່ສາມາດສ້າງມັນໄດ້ - ໃຊ້ mknod (2) ແທນ.

ໃນລະບົບໄຟລ໌ NFS ທີ່ມີການສ້າງແຜນທີ່ UID ທີ່ເປີດໃຊ້, ເປີດ ອາດຈະສົ່ງກັບຄືນຄໍາບັນ ຍາຍຂອງ ໄຟລ໌ແຕ່ວ່າການ ອ່ານ (2) ແມ່ນຖືກປະຕິເສດດ້ວຍ EACCES . ນີ້ແມ່ນຍ້ອນວ່າລູກຄ້າປະຕິບັດການ ເປີດ ໂດຍການກວດສອບສິດ, ແຕ່ການກໍານົດແຜນ UID ແມ່ນຖືກປະຕິບັດໂດຍເຄື່ອງແມ່ຂ່າຍຕາມຄວາມຕ້ອງການອ່ານແລະຂຽນ.

ຖ້າແຟ້ມຖືກສ້າງຂຶ້ນໃຫມ່, ເວລາທີ່ໃຊ້ເວລາ, ctime, mtime ຈະຖືກກໍານົດໄວ້ໃນເວລາປັດຈຸບັນ, ແລະດັ່ງນັ້ນແມ່ນທົ່ງນາ ctime ແລະ mtime ຂອງໂຟເດີແມ່ຂອງ. ຖ້າບໍ່ດັ່ງນັ້ນ, ຖ້າໄຟລ໌ຖືກດັດແກ້ເນື່ອງຈາກທຸງ O_TRUNC, ທົ່ງນາເວລາແລະເວລາຂອງມັນຖືກກໍານົດເປັນເວລາປະຈຸບັນ.

ຂໍ້ຜິດພາດ

EEXIST

pathname already exists and O_CREAT and O_EXCL were used.

EISDIR

pathname ຫມາຍເຖິງໄດເລກະທໍລີແລະການເຂົ້າເຖິງການຂຽນທີ່ກ່ຽວຂ້ອງ (ເຊິ່ງແມ່ນ O_WRONLY ຫຼື O_RDWR ຖືກກໍານົດ).

EACCES

ບໍ່ອະນຸຍາດໃຫ້ເຂົ້າໃຊ້ໄຟລ໌ທີ່ຮ້ອງຂໍຫຼືໄຟລ໌ໃດຫນຶ່ງທີ່ຢູ່ໃນ ຊື່ເສັ້ນທາງ ບໍ່ໄດ້ອະນຸຍາດໃຫ້ການສືບຄົ້ນ (ປະຕິບັດ), ຫຼືໄຟລ໌ທີ່ບໍ່ມີຢູ່ແລ້ວແລະການເຂົ້າເຖິງລະບົບຂອງແມ່ບົດແມ່ບໍ່ໄດ້ຖືກອະນຸຍາດ.

ENAMETOOLONG

pathname ຍາວເກີນໄປ.

ENOENT

O_CREAT ບໍ່ໄດ້ກໍານົດແລະໄຟລ໌ຊື່ທີ່ບໍ່ມີຢູ່. ຫຼື, ອົງປະກອບຂອງອົງປະກອບໃນ pathname ບໍ່ມີຢູ່ຫຼືເປັນການເຊື່ອມໂຍງສັນຍາລັກ dangling.

ENOTDIR

ອົງປະກອບທີ່ໃຊ້ເປັນໄດເລກະທໍລີໃນ pathname ບໍ່ແມ່ນ, ໃນຕົວຈິງແລ້ວ, ໄດເລກະທໍລີ, ຫຼື O_DIRECTORY ຖືກລະບຸແລະ pathname ບໍ່ແມ່ນ directory.

ENXIO

O_NONBLOCK | O_WRONLY ຖືກກໍານົດ, ໄຟລ໌ຊື່ທີ່ເປັນ FIFO ແລະບໍ່ມີຂະບວນການທີ່ມີໄຟລ໌ເປີດສໍາລັບການອ່ານ. ຫຼື, ໄຟລ໌ແມ່ນໄຟລ໌ພິເສດອຸປະກອນແລະບໍ່ມີອຸປະກອນທີ່ສອດຄ້ອງກັນ.

ENODEV

pathname ຫມາຍເຖິງໄຟລ໌ພິເສດອຸປະກອນແລະບໍ່ມີອຸປະກອນທີ່ກ່ຽວຂ້ອງ. (ນີ້ແມ່ນ bug kernel bug - ໃນສະຖານະການນີ້ ENXIO ຕ້ອງຖືກສົ່ງຄືນ.)

EROFS

pathname ຫມາຍເຖິງໄຟລ໌ໃນລະບົບໄຟລ໌ທີ່ມີພຽງແຕ່ອ່ານແລະຕ້ອງການການຂຽນເຂົ້າ.

ETXTBSY

pathname ຫມາຍເຖິງຮູບພາບປະຕິບັດທີ່ກໍາລັງຖືກປະຕິບັດແລະຂຽນເຂົ້າເຖິງໄດ້ຖືກຮຽກຮ້ອງ.

EFAULT

ຈຸດ ເສັ້ນທາງ ທີ່ຢູ່ນອກຊ່ອງສະຖານທີ່ທີ່ສາມາດເຂົ້າເຖິງໄດ້.

ELOOP

ມີການເຊື່ອມຕໍ່ສັນຍາລັກຫລາຍເກີນໄປໃນການແກ້ໄຂ ຊື່ເສັ້ນທາງ , ຫຼື O_NOFOLLOW ຖືກລະບຸແຕ່ ເສັ້ນທາງ ເປັນເສັ້ນທາງສັນຍາລັກ.

ENOSPC

pathname ຈະຖືກສ້າງຂຶ້ນແຕ່ອຸປະກອນທີ່ມີ ຊື່ເສັ້ນທາງ ບໍ່ມີຫ້ອງສໍາລັບເອກະສານໃຫມ່.

ENOMEM

ຫນ່ວຍຄວາມຈໍາ kernel ບໍ່ພຽງພໍ.

EMFILE

ຂະບວນການແລ້ວມີຈໍານວນໄຟລ໌ທີ່ເປີດກວ້າງ.

ENFILE

ຂໍ້ຈໍາກັດກ່ຽວກັບຈໍານວນໄຟລ໌ທີ່ເປີດໃນລະບົບໄດ້ຖືກບັນລຸ.

ສອດຄ່ອງກັບ

SVR4, SVID, POSIX, X / OPEN, BSD 4.3 ທຸງ O_NOFOLLOW ແລະ O_DIRECTORY ແມ່ນ Linux ທີ່ມີປະສິດທິພາບ . ຫນຶ່ງອາດຈະຕ້ອງກໍານົດ macro _GNU_SOURCE ເພື່ອໃຫ້ໄດ້ຄໍານິຍາມຂອງມັນ.

Restrictions

ມີ infelicities ຫຼາຍໃນໂປຣແກຣມທີ່ຢູ່ພາຍໃຕ້ NFS, ເຊິ່ງມີຜົນຕໍ່ O_SYNC ແລະ O_NDELAY .

POSIX ສະຫນອງສໍາລັບສາມ variants ທີ່ແຕກຕ່າງກັນຂອງ I / O synchronized, ທີ່ສອດຄ້ອງກັບທົງ O_SYNC , O_DSYNC ແລະ O_RSYNC . ປະຈຸບັນ (2.1.130) ເຫຼົ່ານີ້ແມ່ນທັງຫມົດທີ່ຢູ່ໃນ Linux.