ਲੀਨਕਸ ਕਮਾਂਡ ਓਪਨ ਨੂੰ ਸਿੱਖੋ

ਸੰਖੇਪ

#include << ਇੱਕ HREF = "file: /usr/include/sys/types.h"> sys / types.h> # ਸ਼ਾਮਲ ਕਰੋ << ਇੱਕ HREF = "file: /usr/include/sys/stat.h"> sys / stat.h> #include << ਇੱਕ HREF = "file: /usr/include/fcntl.h"> fcntl.h> int open (const char * pathname , int flags ); ਇੰਟ ਖੁੱਲ੍ਹੀ (const char * pathname , int ਫਲੈਗ , mode_t ਮੋਡ ); int creat (const char * pathname , mode_t ਮੋਡ );

ਵਰਣਨ

ਓਪਨ () ਸਿਸਟਮ ਕਾਲ linux ਕਮਾਂਡ ਨੂੰ ਇੱਕ ਪਥਨਾਮ ਨੂੰ ਇੱਕ ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਵਿੱਚ ਬਦਲਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ (ਇੱਕ ਛੋਟੇ, ਗੈਰ-ਨੈਗੇਟਿਵ ਪੂਰਨਤਾ ਨੂੰ ਅਗਲੇ I / O ਵਿੱਚ ਪੜ੍ਹਨ , ਲਿਖਣ , ਆਦਿ ਦੇ ਨਾਲ ਵਰਤਣ ਲਈ). ਜਦੋਂ ਕਾੱਲ ਸਫ਼ਲ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਨੇ ਸਭ ਤੋਂ ਘੱਟ ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਬਣਵਾ ਦਿੱਤਾ ਹੈ, ਜੋ ਇਸ ਸਮੇਂ ਪ੍ਰਕਿਰਿਆ ਲਈ ਨਹੀਂ ਖੋਲ੍ਹਦਾ. ਇਹ ਕਾਲ ਇੱਕ ਨਵੀਂ ਖੁੱਲੀ ਫਾਈਲ ਬਣਾਉਂਦਾ ਹੈ, ਕਿਸੇ ਹੋਰ ਪ੍ਰਕਿਰਿਆ ਨਾਲ ਸਾਂਝਾ ਨਹੀਂ ਕੀਤੀ ਜਾਂਦੀ. (ਪਰ ਸਾਂਝੀਆਂ ਖੁੱਲੀਆਂ ਫਾਈਲਾਂ ਫੋਰਕ (2) ਸਿਸਟਮ ਕਾਲ ਦੇ ਰਾਹੀਂ ਪੈਦਾ ਹੋ ਸਕਦੀਆਂ ਹਨ.) ਨਵੀਂ ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਨੂੰ ਐਗ ਫੰਕਸ਼ਨਾਂ ਲਈ ਖੁੱਲ੍ਹਾ ਰਹਿਣਾ ਚਾਹੀਦਾ ਹੈ (ਦੇਖੋ fcntl (2)). ਫਾਇਲ ਨੂੰ ਆਫਸੈੱਟ ਫਾਇਲ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੈ.

ਪੈਰਾਮੀਟਰ ਫਲੈਗ ਇੱਕ O_RDONLY , O_WRONLY ਜਾਂ O_RDWR ਵਿੱਚੋਂ ਇੱਕ ਹੈ, ਜੋ ਕਿ ਸਿਰਫ਼ ਪੜ੍ਹਨ-ਲਈ ਲਿਖਣ, ਲਿਖਣ ਲਈ ਲਿਖਣ ਜਾਂ ਪੜ੍ਹਨ / ਲਿਖਣ ਦੀ ਬੇਨਤੀ ਨੂੰ ਕ੍ਰਮਵਾਰ, bitwise- ਜਾਂ 'd ਹੇਠਾਂ ਦਿੱਤੇ ਜ਼ੀਰੋ ਜਾਂ ਜਿਆਦਾ:

O_CREAT

ਜੇ ਫਾਇਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ ਤਾਂ ਇਸ ਨੂੰ ਬਣਾਇਆ ਜਾਵੇਗਾ. ਫਾਈਲ ਦਾ ਮਾਲਕ (ਉਪਭੋਗਤਾ ID) ਪ੍ਰਕਿਰਿਆ ਦੇ ਪ੍ਰਭਾਵੀ ਉਪਭੋਗਤਾ ID ਤੇ ਸੈਟ ਕੀਤਾ ਗਿਆ ਹੈ. ਗਰੁੱਪ ਮਲਕੀਅਤ (ਸਮੂਹ ਆਈਡੀ) ਪ੍ਰਕਿਰਿਆ ਦੇ ਪ੍ਰਭਾਵੀ ਗਰੁੱਪ ਆਈਡੀ ਜਾਂ ਪੇਰੈਂਟ ਡਾਇਰੈਕਟਰੀ ਦੇ ਸਮੂਹ ID (ਫਾਈਲਸਿਸਟਮ ਟਾਈਪ ਅਤੇ ਮਾਊਟ ਚੋਣਾਂ ਅਤੇ ਪੇਰੈਂਟ ਡਾਇਰੈਕਟਰੀ ਦੇ ਮਾਧਿਅਮ ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ) ਲਈ, ਸੈਟ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਉਦਾਹਰਨ ਲਈ, ਮਾਊਂਟ ਚੋਣਾਂ bsdgroups ਅਤੇ ext2 ਫਾਇਲਸਿਸਟਮ ਦੇ sysvgroups , ਜਿਵੇਂ ਕਿ ਮਾਊਂਟ (8) ਵਿੱਚ ਦੱਸਿਆ ਗਿਆ ਹੈ.

O_EXCL

ਜਦੋਂ O_CREAT ਨਾਲ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਜੇ ਫਾਇਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ ਤਾਂ ਇਹ ਇੱਕ ਗਲਤੀ ਹੈ ਅਤੇ ਓਪਨ ਅਸਫਲ ਹੋ ਜਾਵੇਗਾ. ਇਸ ਸੰਦਰਭ ਵਿੱਚ, ਇੱਕ ਚਿੰਨ੍ਹੀ ਸਬੰਧ ਮੌਜੂਦ ਹੈ, ਭਾਵੇਂ ਕਿ ਇਸਦੇ ਬਿੰਦੂਆਂ ਦੇ ਅਧਾਰ ਤੇ. O_EXCL ਨੂੰ NFS ਫਾਇਲ ਸਿਸਟਮ ਤੇ ਵੰਡਿਆ ਗਿਆ ਹੈ , ਪਰੋਗਰਾਮਾਂ, ਜੋ ਕਿ ਲਾਕ ਕਰਨ ਦੇ ਕੰਮ ਕਰਨ ਲਈ ਇਸ ਉੱਤੇ ਨਿਰਭਰ ਹਨ, ਵਿੱਚ ਰੇਸ ਕੰਡੀਸ਼ਨ ਸ਼ਾਮਿਲ ਹੋਵੇਗੀ. ਲਾਕ-ਫਾਈਲ ਵਰਤ ਕੇ ਐਟਮੀ ਫਾਈਲ ਲਾਕਿੰਗ ਕਰਨ ਦਾ ਹੱਲ ਉਸੇ fs (ਜਿਵੇਂ ਕਿ ਹੋਸਟਨਾਮ ਅਤੇ ਪੀਡ ਸ਼ਾਮਲ ਕਰਨਾ) ਤੇ ਇਕ ਵਿਲੱਖਣ ਫਾਇਲ ਬਣਾਉਣਾ ਹੈ, ਤਾਂ ਲਾਕਫਾਇਲ ਨਾਲ ਸਬੰਧ ਬਣਾਉਣ ਲਈ ਲਿੰਕ (2) ਦੀ ਵਰਤੋਂ ਕਰੋ . ਜੇਕਰ ਲਿੰਕ () 0 ਦਿੰਦਾ ਹੈ, ਤਾਂ ਲਾਕ ਸਫਲ ਹੁੰਦਾ ਹੈ. ਨਹੀਂ ਤਾਂ ਇਹ ਪਤਾ ਲਗਾਉਣ ਲਈ ਵਿਲੱਖਣ ਫਾਈਲ 'ਤੇ ਸਟੇਟ (2) ਦੀ ਵਰਤੋਂ ਕਰੋ ਕਿ ਇਸਦੀ ਲਿੰਕ ਗਿਣਤੀ 2 ਤੱਕ ਵਧ ਗਈ ਹੈ, ਜਿਸ ਵਿੱਚ ਇਹ ਲਾਕ ਵੀ ਸਫਲ ਹੈ.

O_NOCTTY

ਜੇ ਪਥਨਾਮ ਇੱਕ ਟਰਮੀਨਲ ਉਪਕਰਨ ਵੱਲ ਸੰਕੇਤ ਕਰਦਾ ਹੈ --- tty (4) --- ਇਹ ਪ੍ਰਕਿਰਿਆ ਦਾ ਕੰਟਰੋਲ ਕਰਨ ਵਾਲਾ ਟਰਮੀਨਲ ਨਹੀਂ ਬਣੇਗਾ ਭਾਵੇਂ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਕੋਈ ਨਹੀਂ ਹੈ.

O_TRUNC

ਜੇ ਫਾਇਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ ਅਤੇ ਇੱਕ ਨਿਯਮਿਤ ਫਾਈਲ ਹੈ ਅਤੇ ਓਪਨ ਮੋਡ ਲਿਖਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ (ਭਾਵ, O_RDWR ਜਾਂ O_WRONLY) ਤਾਂ ਇਹ 0 ਦੀ ਲੰਬਾਈ ਨੂੰ ਵੱਢ ਦਿੱਤੀ ਜਾਵੇਗੀ. ਜੇ ਫਾਇਲ ਇੱਕ FIFO ਜਾਂ ਟਰਮੀਨਲ ਡਿਵਾਈਸ ਫਾਈਲ ਹੈ, ਤਾਂ O_TRUNC ਫਲੈਗ ਨੂੰ ਅਣਡਿੱਠਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ. ਨਹੀਂ ਤਾਂ, O_TRUNC ਦਾ ਪ੍ਰਭਾਵ ਨਿਰਦਿਸ਼ਟ ਹੈ. (ਬਹੁਤ ਸਾਰੇ ਲੀਨਕਸ ਵਰਜਨਾਂ 'ਤੇ ਇਸਨੂੰ ਅਣਡਿੱਠਾ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ; ਦੂਜੇ ਸੰਸਕਰਣਾਂ' ਤੇ, ਇਹ ਇੱਕ ਗਲਤੀ ਦੇਵੇਗਾ.)

O_APPEND

ਫਾਇਲ ਐਂਪਸ ਮੋਡ ਵਿੱਚ ਖੋਲ੍ਹੀ ਗਈ ਹੈ. ਹਰੇਕ ਲਿਖਣ ਤੋਂ ਪਹਿਲਾਂ, ਫਾਇਲ ਪੁਆਇੰਟਰ ਫਾਇਲ ਦੇ ਅਖੀਰ ਤੇ ਸਥਿਤ ਹੈ, ਜਿਵੇਂ ਕਿ lseek ਨਾਲ. O_APPEND NFS ਫਾਇਲ ਸਿਸਟਮਾਂ ਉੱਤੇ ਫਾਇਲਾਂ ਨੂੰ ਖਰਾਬ ਕਰ ਸਕਦਾ ਹੈ ਜੇ ਇੱਕ ਤੋਂ ਵੱਧ ਪ੍ਰਕਿਰਿਆ ਇੱਕ ਵਾਰ ਵਿੱਚ ਇੱਕ ਫਾਇਲ ਨੂੰ ਡਾਟਾ ਜੋੜਦੀ ਹੈ ਇਹ ਇਸ ਕਰਕੇ ਹੈ ਕਿ NFS ਫਾਇਲ ਨੂੰ ਜੋੜਨ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੀ, ਇਸ ਲਈ ਕਲਾਇੰਟ ਕਰਨਲ ਨੂੰ ਇਸ ਦੀ ਨਕਲ ਕਰਨੀ ਪੈਂਦੀ ਹੈ, ਜੋ ਕਿਸੇ ਰੇਸ ਕੰਡੀਸ਼ਨ ਤੋਂ ਬਗੈਰ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ.

O_NONBLOCK ਜਾਂ O_NDELAY

ਜਦੋਂ ਵੀ ਸੰਭਵ ਹੋਵੇ, ਫਾਈਲ ਬਿਨਾਂ-ਬਲਾਕਿੰਗ ਮੋਡ ਵਿੱਚ ਖੋਲ੍ਹੀ ਜਾਂਦੀ ਹੈ. ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਤੇ ਨਾ ਤਾਂ ਖੁੱਲ੍ਹਾ ਹੈ ਅਤੇ ਨਾ ਹੀ ਕੋਈ ਅਗਲੀ ਕਾਰਵਾਈ, ਜੋ ਵਾਪਸ ਕਰ ਦਿੱਤੀ ਗਈ ਹੈ, ਕਾਲਿੰਗ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਉਡੀਕ ਕਰਨ ਦਾ ਕਾਰਨ ਬਣੇਗਾ. ਫੀਫਾ (ਨਿਵਾਦੀਆਂ ਪਾਈਪਾਂ) ਦੀ ਸੰਭਾਲ ਲਈ, ਫੀੋ (4) ਵੀ ਦੇਖੋ. ਇਸ ਮੋਡ ਤੇ FIFO ਤੋਂ ਇਲਾਵਾ ਫਾਈਲਾਂ ਤੇ ਕੋਈ ਅਸਰ ਨਹੀਂ ਹੋਵੇਗਾ.

O_SYNC

ਫਾਇਲ ਸਮਕਾਲੀ I / O ਲਈ ਖੁੱਲ੍ਹੀ ਹੈ ਪਰਿਭਾਸ਼ਿਤ ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਉੱਤੇ ਕੋਈ ਵੀ ਲਿਖਤ s ਕਾਲਿੰਗ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਉਦੋਂ ਤੱਕ ਰੋਕ ਪਾਏਗੀ ਜਦੋਂ ਤੱਕ ਡਾਟਾ ਹਾਲੀਆ ਹਾਰਡਵੇਅਰ ਨੂੰ ਲਿਖਿਆ ਨਹੀਂ ਜਾਂਦਾ. ਹੇਠਾਂ ਰਿਸਟ੍ਰਿਕਸ਼ਨ ਦੇਖੋ, ਹਾਲਾਂਕਿ.

O_NOFOLLOW

ਜੇਕਰ ਪਾਥਨਾਮ ਇਕ ਸਿੰਬੋਲਿਕ ਲਿੰਕ ਹੈ, ਤਾਂ ਓਪਨ ਫੇਲ੍ਹ ਹੁੰਦਾ ਹੈ. ਇਹ ਇੱਕ FreeBSD ਐਕਸਟੈਂਸ਼ਨ ਹੈ, ਜੋ ਵਰਜਨ 2.1.126 ਤੇ ਲੀਨਕਸ ਵਿੱਚ ਜੋੜਿਆ ਗਿਆ ਸੀ. ਪਥ-ਨਾਂ ਦੇ ਪਹਿਲਾਂ ਦੇ ਭਾਗਾਂ ਵਿੱਚ ਸਿੰਬੋਲਿਕ ਲਿੰਕਾਂ ਦੀ ਅਜੇ ਵੀ ਪਾਲਣਾ ਕੀਤੀ ਜਾਵੇਗੀ. Glibc 2.0.100 ਅਤੇ ਬਾਅਦ ਵਾਲੇ ਸਿਰਲੇਖਾਂ ਵਿੱਚ ਇਸ ਫਲੈਗ ਦੀ ਪਰਿਭਾਸ਼ਾ ਸ਼ਾਮਲ ਹੈ; 2.1126 ਤੋਂ ਪਹਿਲਾਂ ਕਰਨਲ ਇਸ ਨੂੰ ਨਜ਼ਰ ਅੰਦਾਜ਼ ਕਰਨਗੇ ਜੇ ਵਰਤਿਆ ਜਾਵੇ .

O_DIRECTORY

ਜੇਕਰ ਪਾਥਨਾਮ ਇੱਕ ਡਾਇਰੈਕਟਰੀ ਨਹੀਂ ਹੈ, ਤਾਂ ਫੇਲ੍ਹ ਹੋਣ ਲਈ ਖੁੱਲ੍ਹਾ ਬਣਦਾ ਹੈ. ਇਹ ਫਲੈਗ ਲੀਨਕਸ-ਵਿਸ਼ੇਸ਼ ਹੈ, ਅਤੇ ਕਰਨਲ ਵਰਜਨ 2.1.126 ਵਿੱਚ ਜੋੜਿਆ ਗਿਆ ਸੀ, ਜੇ ਉਪਿੰਟਰ (3) ਨੂੰ ਇੱਕ ਫੀਫਾ ਜਾਂ ਟੇਪ ਡਿਵਾਈਸ ਤੇ ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਪਰ ਓਪੈਂਡਰ ਦੇ ਲਾਗੂ ਕਰਨ ਤੋਂ ਬਾਹਰ ਨਹੀਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ .

O_DIRECT

I / O ਦੇ ਕੈਸ਼ੇ ਪ੍ਰਭਾਵ ਨੂੰ ਅਤੇ ਇਸ ਫਾਇਲ ਤੋਂ ਘਟਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ. ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਨੀਵਾਂ ਦਿਖਾਏਗਾ, ਪਰ ਇਹ ਵਿਸ਼ੇਸ਼ ਸਥਿਤੀਆਂ ਵਿੱਚ ਉਪਯੋਗੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਜਦੋਂ ਐਪਲੀਕੇਸ਼ਨ ਆਪਣੀ ਕੈਚਿੰਗ ਕਰਦੇ ਹਨ. ਫਾਈਲ I / O ਨੂੰ ਸਿੱਧੇ ਹੀ ਯੂਜ਼ਰ ਸਪੇਸ ਬਫਰਸ ਤੋਂ / ਕੀਤਾ ਜਾਂਦਾ ਹੈ. I / O ਸਮਕਾਲੀ ਹੈ, ਭਾਵ, ਪੜ੍ਹਨ (2) ਪੂਰਾ ਹੋਣ 'ਤੇ ਜਾਂ (2) ਸਿਸਟਮ ਕਾਲ ਲਿਖਣ ਤੇ , ਡੇਟਾ ਨੂੰ ਟ੍ਰਾਂਸਫਰ ਕਰਨ ਦੀ ਗਾਰੰਟੀ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ. ਸੰਚਾਰ ਮਾਧਿਅਮ, ਅਤੇ ਉਪਭੋਗਤਾ ਬਫਰ ਦੀ ਸੰਜੋਗ ਅਤੇ ਫਾਇਲ ਆਫਸੈੱਟ ਸਾਰੇ ਫਾਇਲ ਸਿਸਟਮ ਦੇ ਲਾਜੀਕਲ ਬਲਾਕ ਸਾਈਜ਼ ਦੇ ਗੁਣਕ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ.
ਇਹ ਫਲੈਗ ਕਈ ਯੂਨਿਕਸ ਵਰਗੇ ਸਿਸਟਮਾਂ ਤੇ ਸਮਰਥ ਹੈ; ਸਹਿਯੋਗ ਨੂੰ ਕਰਨਲ ਵਰਜਨ 2.4.10 ਵਿੱਚ ਲੀਨਕਸ ਅਧੀਨ ਸ਼ਾਮਿਲ ਕੀਤਾ ਗਿਆ ਸੀ.
ਬਲਾਕ ਜੰਤਰਾਂ ਲਈ ਇਕ ਅਰਥ-ਸ਼ਾਸਕ ਇੰਞ ਇੰਟਰਫੇਸ ਕੱਚ (8) ਵਿਚ ਦੱਸਿਆ ਗਿਆ ਹੈ.

O_ASYNC

ਇੱਕ ਸਿਗਨਲ ਬਣਾਓ (ਡਿਫਾਲਟ ਰੂਪ ਵਿੱਚ SIGIO, ਪਰ ਇਸ ਨੂੰ fcntl (2) ਦੁਆਰਾ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ) ਜਦੋਂ ਇਨਪੁਟ ਜਾਂ ਆਉਟਪੁਟ ਇਸ ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਤੇ ਸੰਭਵ ਹੁੰਦਾ ਹੈ. ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਸਿਰਫ ਟਰਮੀਨਲਾਂ, ਸੂਡੋ-ਟਰਮੀਨਲਾਂ ਅਤੇ ਸਾਕਟਾਂ ਲਈ ਉਪਲਬਧ ਹੈ. ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ fcntl (2) ਵੇਖੋ.

O_LARGEFILE

32-ਬਿੱਟ ਸਿਸਟਮ ਜੋ ਵੱਡੇ ਫਾਈਲਾਂ ਸਿਸਟਮ ਦਾ ਸਮਰਥਨ ਕਰਦੇ ਹਨ, ਉਹਨਾਂ ਫਾਈਲਾਂ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹਨ ਜਿਹਨਾਂ ਦੇ ਆਕਾਰ ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ 31 ਬਿੱਟ ਵਿੱਚ ਨੁਮਾਇੰਦਗੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ.

ਫਾਈਲ ਖੋਲ੍ਹਣ ਤੋਂ ਬਾਅਦ ਇਹਨਾਂ ਵਿਚੋਂ ਕੁਝ ਵਿਕਲਪਕ ਝੰਡੇ ਨੂੰ fcntl ਵਰਤ ਕੇ ਤਬਦੀਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ.

ਆਰਗੂਮੈਂਟ ਢੰਗ ਇੱਕ ਨਵ ਫਾਇਲ ਬਣਾਉਣ ਦੇ ਅਧਿਕਾਰ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਮਨਜੂਰੀ ਦਿੰਦਾ ਹੈ. ਇਹ ਪ੍ਰਕਿਰਿਆ ਦੇ umask ਦੁਆਰਾ ਆਮ ਤਰੀਕੇ ਨਾਲ ਸੋਧਿਆ ਗਿਆ ਹੈ: ਬਣਾਈ ਗਈ ਫਾਈਲ ਦੇ ਅਧਿਕਾਰ ਹਨ (ਮੋਡ & ~ ਾਮਾਸਕ) . ਯਾਦ ਰੱਖੋ ਕਿ ਇਹ ਵਿਧੀ ਸਿਰਫ ਨਵੀਂ ਬਣਾਈ ਗਈ ਫਾਈਲ ਦੇ ਭਵਿੱਖ ਦੇ ਪਹੁੰਚ ਤੇ ਲਾਗੂ ਹੁੰਦੀ ਹੈ; ਓਪਨ ਕਾਲ, ਜੋ ਸਿਰਫ ਰੀਡ-ਓਨਲੀ ਫਾਈਲ ਬਣਾਉਂਦਾ ਹੈ, ਇੱਕ ਰੀਡ / ਲਿਖੋ ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਨੂੰ ਵਾਪਸ ਦੇ ਸਕਦੀ ਹੈ.

ਹੇਠਾਂ ਦਿੱਤੇ ਸੰਕੇਤਕ ਸਥਿਰਾਂ ਨੂੰ ਮੋਡ ਲਈ ਦਿੱਤਾ ਗਿਆ ਹੈ :

S_IRWXU

00700 ਯੂਜ਼ਰ (ਫਾਇਲ ਦੇ ਮਾਲਕ) ਨੇ ਇਜਾਜ਼ਤ ਦੀ ਪੜ੍ਹ, ਲਿਖ ਅਤੇ ਲਾਗੂ ਕੀਤੀ ਹੈ

S_IRUSR (S_IREAD)

00400 ਉਪਯੋਗਕਰਤਾ ਨੇ ਅਨੁਮਤੀ ਪੜ੍ਹੀ ਹੈ

S_IWUSR (S_IWRITE)

00200 ਉਪਭੋਗਤਾ ਨੇ ਲਿਖਤੀ ਆਗਿਆ ਦਿੱਤੀ ਹੈ

S_IXUSR (S_IEXEC)

00100 ਉਪਭੋਗਤਾ ਨੂੰ ਚਲਾਉਣ ਦੀ ਅਨੁਮਤੀ ਹੈ

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

ਖੋਲੋ ਅਤੇ ਨਵੇਂ ਫ਼ਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਨੂੰ ਵਾਪਸ ਭੇਜੋ , ਜਾਂ -1 ਜੇ ਕੋਈ ਤਰੁੱਟੀ ਆਈ ਹੈ (ਜਿਸ ਸਥਿਤੀ ਵਿੱਚ, ਗਲਤ ਨਾਂ ਠੀਕ ਤਰ੍ਹਾਂ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੈ). ਨੋਟ ਕਰੋ ਕਿ ਖੁੱਲੇ ਡਿਵਾਈਸ ਵਿਸ਼ੇਸ਼ ਫਾਈਲਾਂ ਖੋਲ੍ਹ ਸਕਦਾ ਹੈ, ਪਰ creat ਉਹਨਾਂ ਨੂੰ ਨਹੀਂ ਬਣਾ ਸਕਦਾ - ਇਸਦੀ ਬਜਾਏ mknod (2) ਵਰਤੋ.

UID ਮੈਪਿੰਗ ਸਮਰਥਿਤ ਨਾਲ NFS ਫਾਈਲ ਸਿਸਟਮ ਤੇ, ਓਪਨ ਇੱਕ ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਨੂੰ ਮੋੜ ਸਕਦਾ ਹੈ ਪਰ ਉਦਾਹਰਨ ਲਈ , (2) EACCES ਨਾਲ ਬੇਨਤੀਆਂ ਰੱਦ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ. ਇਹ ਇਸ ਲਈ ਹੈ ਕਿ ਗਾਹਕ ਅਧਿਕਾਰਾਂ ਦੀ ਜਾਂਚ ਕਰਕੇ ਖੁੱਲਦਾ ਹੈ , ਪਰ ਯੂਆਈਡੀ ਮੈਪਿੰਗ ਨੂੰ ਸਰਵਰ ਦੁਆਰਾ ਪਡ਼੍ਹਾਈ ਅਤੇ ਲਿਖਣ ਤੇ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ.

ਜੇ ਫਾਇਲ ਨਵੀਂ ਬਣਾਈ ਗਈ ਹੈ, ਤਾਂ ਇਸ ਦਾ atime, ctime, mtime ਖੇਤਰ ਮੌਜੂਦਾ ਸਮੇਂ ਲਈ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੈ, ਅਤੇ ਇਸੇ ਤਰਾਂ ਪੇਰੈਂਟ ਡਾਇਰੈਕਟਰੀ ਦੇ ctime ਅਤੇ mtime ਖੇਤਰ ਹਨ. ਨਹੀਂ ਤਾਂ, ਜੇ ਫਾਇਲ O_TRUNC ਫਲੈਗ ਕਰਕੇ ਤਬਦੀਲ ਕੀਤੀ ਗਈ ਹੈ, ਤਾਂ ਇਸ ਦਾ ctime ਅਤੇ mtime ਖੇਤਰ ਮੌਜੂਦਾ ਸਮੇਂ ਤੇ ਸੈੱਟ ਕੀਤੇ ਗਏ ਹਨ

ਗਲਤੀਆਂ

EEXIST

ਮਾਰਗ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ ਅਤੇ O_CREAT ਅਤੇ O_EXCL ਵਰਤਿਆ ਗਿਆ ਸੀ.

EISDIR

ਪਥਨਾਮ ਇਕ ਡਾਇਰੈਕਟਰੀ ਅਤੇ ਬੇਨਤੀ ਕੀਤੇ ਗਏ ਲਿਖਤ (ਜਿਸਦਾ ਅਰਥ ਹੈ, O_WRONLY ਜਾਂ O_RDWR ਸੈਟ ਹੈ) ਨੂੰ ਦਰਸਾਇਆ ਗਿਆ ਹੈ.

EACCES

ਫਾਇਲ ਲਈ ਬੇਨਤੀ ਕੀਤੀ ਐਕਸੈਗਮੈਂਟ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ, ਜਾਂ ਪਾਥਨਾਂ ਵਿੱਚ ਡਾਇਰੈਕਟਰੀਆਂ ਵਿੱਚੋਂ ਇੱਕ ਦੀ ਖੋਜ (ਐਗਜ਼ੀਕਿਊਟ) ਦੀ ਇਜ਼ਾਜਤ ਨਹੀਂ ਦਿੱਤੀ ਗਈ, ਜਾਂ ਫਾਈਲ ਅਜੇ ਮੌਜੂਦ ਨਹੀਂ ਹੈ ਅਤੇ ਪੇਰੈਂਟ ਡਾਇਰੈਕਟਰੀ ਦੀ ਐਕਸੈਸ ਲਿਖਣ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ.

ENAMETOOLONG

ਮਾਰਗ ਨਾਂ ਬਹੁਤ ਲੰਮਾ ਸੀ

ENOENT

O_CREAT ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਨਾਮਿਤ ਫਾਈਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ. ਜਾਂ, ਪਾਥਨਾਂ ਵਿਚ ਇਕ ਡਾਇਰੈਕਟਰੀ ਭਾਗ ਮੌਜੂਦ ਨਹੀਂ ਹੈ ਜਾਂ ਲੰਗਣ ਵਾਲਾ ਸਿੰਬੋਲਿਕ ਲਿੰਕ ਹੈ.

ENOTDIR

ਪਾਥ ਨਾਂ ਵਿੱਚ ਇੱਕ ਡਾਇਰੈਕਟਰੀ ਦੇ ਤੌਰ ਤੇ ਵਰਤਿਆ ਜਾਣ ਵਾਲਾ ਇੱਕ ਕੰਪੋਨੈਂਟ ਅਸਲ ਵਿੱਚ ਨਹੀਂ ਹੈ, ਇੱਕ ਡਾਇਰੈਕਟਰੀ, ਜਾਂ O_DIRECTORY ਨਿਸ਼ਚਿਤ ਕੀਤੀ ਗਈ ਸੀ ਅਤੇ ਪਾਥਨਾਂ ਇੱਕ ਡਾਇਰੈਕਟਰੀ ਨਹੀਂ ਸੀ.

ENXIO

O_NONBLOCK | O_WRONLY ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਨਾਮਿਤ ਫਾਈਲਾ ਇੱਕ ਫੀਫਾ ਹੈ ਅਤੇ ਕੋਈ ਪ੍ਰਕਿਰਿਆ ਪੜ੍ਹਨ ਲਈ ਫਾਇਲ ਨਹੀਂ ਹੈ. ਜਾਂ, ਫਾਈਲ ਇੱਕ ਡਿਵਾਈਸ ਵਿਸ਼ੇਸ਼ ਫਾਈਲ ਹੈ ਅਤੇ ਕੋਈ ਅਨੁਸਾਰੀ ਡਿਵਾਈਸ ਮੌਜੂਦ ਨਹੀਂ ਹੈ.

ENODEV

ਪਥਨਾਮ ਇੱਕ ਡਿਵਾਈਸ ਵਿਸ਼ੇਸ਼ ਫਾਇਲ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਅਤੇ ਕੋਈ ਅਨੁਸਾਰੀ ਡਿਵਾਈਸ ਮੌਜੂਦ ਨਹੀਂ ਹੈ. (ਇਹ ਲੀਨਕਸ ਕਰਨਲ ਬੱਗ ਹੈ - ਇਸ ਸਥਿਤੀ ਵਿੱਚ ENXIO ਨੂੰ ਵਾਪਸ ਕਰਨਾ ਜਰੂਰੀ ਹੈ.)

EROFS

ਪਥਨਾਮ ਇੱਕ ਰੀਡ-ਓਨਲੀ ਫਾਈਲਸਿਸਟਮ ਤੇ ਇੱਕ ਫਾਈਲ ਨਾਲ ਸੰਕੇਤ ਕਰਦਾ ਹੈ ਅਤੇ ਲਿਖਣ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਜਾਂਦੀ ਸੀ.

ETXTBSY

ਪਾਥਨਾਮ ਇੱਕ ਐਗਜ਼ੀਕਿਊਟੇਬਲ ਚਿੱਤਰ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਜੋ ਇਸ ਵੇਲੇ ਚੱਲ ਰਹੀ ਹੈ ਅਤੇ ਐਕਸੈਸ ਦੀ ਬੇਨਤੀ ਲਈ ਬੇਨਤੀ ਕੀਤੀ ਗਈ ਸੀ.

EFAULT

ਪਥ ਦਾ ਨਾਮ ਤੁਹਾਡੇ ਪਹੁੰਚ ਵਾਲੇ ਐਡਰੈੱਸ ਸਪੇਸ ਤੋਂ ਬਾਹਰ ਦੱਸਦਾ ਹੈ

ELOOP

ਪਾਥ ਨਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ ਚਿੰਨ ਸੰਬੰਧ ਜੋੜਿਆ ਗਿਆ ਸੀ, ਜਾਂ O_NOFOLLOW ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਸੀ ਪਰ ਪਾਥਨਾਂ ਇੱਕ ਸਿੰਬੋਲਿਕ ਲਿੰਕ ਸੀ.

ENOSPC

ਪਥ ਨਾਂ ਨੂੰ ਬਣਾਇਆ ਜਾਣਾ ਸੀ ਪਰੰਤੂ ਪਥ ਨਾਂ ਵਾਲੀ ਡਿਵਾਈਸ ਵਿੱਚ ਨਵੀਂ ਫਾਈਲ ਲਈ ਕੋਈ ਥਾਂ ਨਹੀਂ ਹੈ.

ENOMEM

ਅਪੂਰਨ ਕਰਨਲ ਮੈਮੋਰੀ ਉਪਲਬਧ ਸੀ.

EMFILE

ਪ੍ਰਕਿਰਿਆ ਵਿਚ ਪਹਿਲਾਂ ਹੀ ਸਭ ਤੋਂ ਵੱਧ ਫਾਈਲਾਂ ਦੀਆਂ ਫਾਈਲਾਂ ਹਨ.

ENFILE

ਸਿਸਟਮ ਤੇ ਖੁੱਲੀਆਂ ਫਾਈਲਾਂ ਦੀ ਕੁਲ ਗਿਣਤੀ ਤੇ ਸੀਮਾ ਪੂਰੀ ਹੋ ਗਈ ਹੈ.

ਨੂੰ ਅਨੁਕੂਲ

SVR4, SVID, POSIX, X / OPEN, BSD 4.3 O_NOFOLLOW ਅਤੇ O_DIRECTORY ਫਲੈਗ ਲੀਨਕਸ -ਸਪੰਸੀਕ ਹਨ. ਉਹਨਾਂ ਨੂੰ ਆਪਣੀਆਂ ਪ੍ਰੀਭਾਸ਼ਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ _GNU_SOURCE ਮੈਕਰੋ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ ਪੈ ਸਕਦਾ ਹੈ.

ਪ੍ਰਤਿਬੰਧ

ਐਨਐਫਐਸ ਦੇ ਪ੍ਰੋਟੋਕਾਲ ਅਧੀਨ ਕਈ ਪ੍ਰੇਸ਼ਾਨੀ ਹਨ, ਜੋ ਦੂਜੀਆਂ O_SYNC ਅਤੇ O_NDELAY ਵਿਚ ਪ੍ਰਭਾਵ ਪਾਉਂਦੀ ਹੈ .

POSIX ਸਿੰਕ੍ਰੋਨਾਈਜ਼ਡ I / O ਦੇ ਤਿੰਨ ਵੱਖ ਵੱਖ ਰੂਪਾਂ ਲਈ, ਫਲੈਗ O_SYNC , O_DSYNC ਅਤੇ O_RSYNC ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ. ਵਰਤਮਾਨ ਵਿੱਚ (2.1.130) ਇਹ ਸਾਰੇ ਲੀਨਕਸ ਅਧੀਨ ਸਮਕਾਲੀ ਹਨ.