Linux આદેશ ઓપન જાણો

સારાંશ

# સમાવેશ થાય છે sys / types.h> # સમાવેશ થાય છે << HREF = "file: /usr/include/sys/stat.h"> sys / stat.h> # સમાવેશ થાય છે << એક HREF = "ફાઈલ: /usr/include/fcntl.h"> fcntl.h> પૂર્ણાંક ઓપન (const char * pathname , int ફ્લેગો ); પૂર્ણાંક (કન્સ્ટ્રક્ટ ચાર * પાથનામ , ઈન્ ફ્લેગ , મોડ_ટ મોડ ); int creat (const char * pathname , mode_t સ્થિતિ );

વર્ણન

ઓપન () સિસ્ટમ કોલ linux આદેશનો ઉપયોગ પાથનામને ફાઇલ ડિસ્ક્રીપ્ટર (વારાફરતી I / O માં વાંચવા , લખવા , વગેરે સાથે વાપરવા માટેના નાના, બિન-નકારાત્મક પૂર્ણાંક) માં કન્વર્ટ કરવા માટે થાય છે. જ્યારે કૉલ સફળ થાય છે, ત્યારે ફાઈલ ડિસ્ક્રીપ્ટર પુનઃપ્રાપ્ત થઈ જાય છે, જે હાલમાં પ્રક્રિયા માટે ખુલ્લું નથી તે સૌથી ઓછી ફાઇલ ડિસ્ક્રીપ્ટર છે. આ કૉલ એક નવી ખુલ્લી ફાઇલ બનાવે છે, અન્ય કોઈપણ પ્રક્રિયા સાથે શેર કરેલ નથી. (પરંતુ વહેંચાયેલ ખુલ્લી ફાઇલો ફોર્ક (2) સિસ્ટમ કોલ દ્વારા ઊભી થઈ શકે છે.) નવી ફાઇલ ડિસ્ક્રિટર એક્ઝેક ફંક્શન્સમાં ખુલ્લી રહેવા માટે સુયોજિત છે (જુઓ fcntl (2)) ફાઈલ ઓફસેટ ફાઈલની શરૂઆતમાં સુયોજિત છે.

પેરામીટર ફ્લેગO_RDONLY , O_WRONLY અથવા O_RDWR પૈકીનું એક છે જે ફાઇલ ફક્ત-વાંચવા માટે, ફક્ત લખવાનું અથવા વાંચવા / લખવા માટે અનુક્રમે, બીટવ્યુ- અથવા 'ડી સાથે શૂન્ય અથવા નીચેનામાંથી વધુ:

O_CREAT

જો ફાઇલ અસ્તિત્વમાં નથી તો તે બનાવવામાં આવશે. ફાઇલના માલિક (વપરાશકર્તા ID) પ્રક્રિયાના અસરકારક વપરાશકર્તા ID પર સેટ છે જૂથની માલિકી (જૂથ ID) પ્રક્રિયાના અસરકારક જૂથ ID અથવા પેરેન્ટ ડાયરેક્ટરીના જૂથ ID (ફાઇલસિસ્ટમ પ્રકાર અને માઉન્ટ વિકલ્પો અને પિતૃ ડાયરેક્ટરીના આધારે) પર સેટ છે, જુઓ, માઉન્ટ વિકલ્પો bsdgroups અને ext2 ફાઇલસિસ્ટમના sysvgroups , જેમને માઉન્ટ (8) માં વર્ણવ્યા છે.

O_EXCL

જ્યારે O_CREAT સાથે ઉપયોગ થતો હોય , જો ફાઇલ પહેલાથી હાજર છે તો તે એક ભૂલ છે અને ઓપન નિષ્ફળ જશે. આ સંદર્ભમાં, એક સિમ્બોલિક લિંક અસ્તિત્વમાં છે, તેના બિંદુઓ જ્યાં સુધી નહીં. O_EXCLNFS ફાઈલ સિસ્ટમો પર તૂટી ગયેલ છે, પ્રોગ્રામ જે લોકીંગ કાર્યો કરવા માટે તેના પર આધાર રાખે છે તેમાં રેસ શરત હશે. લોકફાઇલનો ઉપયોગ કરીને અણુ ફાઇલ લોકીંગ કરવાના ઉકેલ એ સમાન fs પર અનન્ય ફાઇલ બનાવવાનું છે (દા.ત., હોસ્ટનામ અને પીડનો સમાવેશ કરવો), લોકફાઇલની લિંક બનાવવા માટે લિંક (2) નો ઉપયોગ કરો જો લિંક () 0 આપે છે, લોક સફળ છે. નહિંતર, અનન્ય ફાઇલ પર stat (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 માટે ખોલવામાં આવી છે પરિણામી ફાઇલ ડિસ્ક્રીપ્ટર પર કોઈપણ લખે છે, જ્યાં સુધી ડેટા અંતર્ગત હાર્ડવેરમાં ભૌતિક રૂપે લખવામાં ન આવે ત્યાં સુધી કૉલિંગ પ્રક્રિયાને અવરોધિત કરશે. નીચે નિયંત્રણો જુઓ, છતાં.

O_NOFOLLOW

જો પાથનામ સાંકેતિક કડી છે, તો ઓપન નિષ્ફળ જાય છે. આ એક ફ્રીબીએસડી વિસ્તરણ છે, જે આવૃત્તિ 2.1.126 માં લિનક્સમાં ઉમેરાયું હતું. પાથના ના પહેલાનાં ઘટકોમાં સિંબોલિક લિંક્સ હજુ અનુસરવામાં આવશે. Glibc 2.0.100 અને પાછળથી હેડરો આ ધ્વજની વ્યાખ્યાનો સમાવેશ કરે છે; 2.1.126 પહેલાંનો કર્નલો જો તેનો ઉપયોગ કરવામાં આવે તો તેને અવગણશે

O_DIRECTORY

જો પાથનામ એ કોઈ ડિરેક્ટરી નથી, તો ઓપન રૂપે નિષ્ફળ થવું. આ ધ્વજ એ Linux- વિશિષ્ટ છે, અને કર્નલ આવૃત્તિ 2.1.126 માં ઉમેરવામાં આવ્યો હતો, જો અફીણ (3) ને ફિફા અથવા ટેપ ઉપકરણ પર કહેવામાં આવે તો, અસ્વીકાર-ની-સેવા સમસ્યાઓ ટાળવા માટે, પરંતુ opendir ના અમલીકરણની બહાર ઉપયોગ ન કરવો જોઇએ .

O_DIRECT

આ ફાઇલમાં અને I / O ની કેશ અસરો ઘટાડવાનો પ્રયાસ કરો. સામાન્ય રીતે આ પ્રભાવને ઓછું કરશે, પરંતુ તે વિશિષ્ટ પરિસ્થિતિઓમાં ઉપયોગી છે, જેમ કે જ્યારે એપ્લિકેશનો પોતાની કેશીંગ કરે છે. ફાઈલ I / O સીધી જ વપરાશકર્તા સ્પેસ બફરોથી કરવામાં આવે છે. I / O સિંક્રનસ છે, એટલે કે, વાંચવા (2) અથવા લખો (2) સિસ્ટમ કોલ પૂર્ણ થવા પર, માહિતીને તબદીલ કરવામાં આવ્યા હોવાનું ગેરંટી આપવામાં આવે છે. કદ સ્થાનાંતરિત કરો, અને વપરાશકર્તા બફરની ગોઠવણી અને ફાઈલ ઓફસેટ બધા ફાઇલ સિસ્ટમના લોજિકલ બ્લોક કદના ગુણાંક હોવા આવશ્યક છે.
આ ધ્વજ અસંખ્ય યુનિક્સ જેવા સિસ્ટમો પર સપોર્ટેડ છે; આધાર કર્નલ આવૃત્તિ 2.4.10 માં Linux હેઠળ ઉમેરાયો હતો.
બ્લોક ઉપકરણો માટે એક અર્થપૂર્ણ રીતે સમાન ઇન્ટરફેસ કાચી (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 ફ્લેગોમાં હોય ત્યારે સ્પષ્ટ હોવું જોઈએ, અને અન્યથા અવગણવામાં આવે છે.

creatO_CREAT | O_WRONLY | O_TRUNC ના બરાબર ફ્લેગ સાથે ખોલવા બરાબર છે.

રીટર્ન VALUE

ખુલ્લું છે અને નવું ફાઈલ વર્ણનકર્તા પાછુ આવે છે, અથવા -1 જો કોઈ ભૂલ આવી છે (જે કિસ્સામાં, ખોટી રીતે યોગ્ય રીતે સેટ કરેલું છે) નોંધ કરો કે ઓપન ડિવાઇસ વિશિષ્ટ ફાઇલો ખોલી શકે છે, પરંતુ સર્જન તેમને બનાવી શકતા નથી - તેના બદલે mknod (2) નો ઉપયોગ કરો.

યુઆઇડી મેપિંગ સક્રિય કરેલ NFS ફાઇલ સિસ્ટમ્સ પર, ઓપન ફાઇલ ડિસ્ક્રીપ્ટર પાછી આપી શકે છે પરંતુ દા.ત. EACCES સાથે વાંચવા (2) અરજીઓ નકારવામાં આવે છે. આનું કારણ છે કે ક્લાયન્ટ પરવાનગીઓને ચકાસીને ખુલ્લી કરે છે, પરંતુ યુઆઇડી મેપિંગ સર્વર દ્વારા વાંચી અને લખી અરજીઓ પર કરવામાં આવે છે.

જો ફાઇલ નવી બનેલી હોય, તો તેના atime, ctime, mtime ક્ષેત્રો વર્તમાન સમય માટે સુયોજિત છે, અને તેથી પિતૃ ડિરેક્ટરીના ctime અને mtime ક્ષેત્રો છે. અન્યથા, જો ફાઇલ O_TRUNC ફ્લેગને કારણે સુધારવામાં આવી હોય, તો તેની ctime અને mtime ક્ષેત્રો વર્તમાન સમય પર સેટ છે

ભૂલો

EEXIST

પાથમનો પહેલેથી જ અસ્તિત્વમાં છે અને O_CREAT અને O_EXCL નો ઉપયોગ કરવામાં આવ્યો હતો.

ઇઆઇએસડીઆઈઆર

પાથનામ એ ડિરેક્ટરીને સંદર્ભિત કરે છે અને વિનંતી કરેલ લેખિતમાં પ્રવેશ (એટલે ​​કે, ઓ_ વોરોનલી અથવા ઓ_આરડીડબલ્યુઆર સેટ કરેલું છે).

EACCES

ફાઇલની વિનંતીની મંજૂરી નથી, અથવા પાથનામમાં ડિરેક્ટરીઓમાંથી કોઈ એક શોધ (એક્ઝિક્યુટ) પરવાનગીની મંજૂરી આપતી નથી, અથવા ફાઇલ હજી અસ્તિત્વમાં નથી અને પેરેન્ટ ડાયરેક્ટરની ઍક્સેસ લખવા માટેની મંજૂરી નથી.

ENAMETOOLONG

પાથનામ ખૂબ લાંબુ હતું.

ENOENT

O_CREAT સેટ કરેલું નથી અને નામવાળી ફાઇલ અસ્તિત્વમાં નથી. અથવા, પાથનામમાં એક ડિરેક્ટરી ઘટક અસ્તિત્વમાં નથી અથવા તે લલચાવતું સાંકેતિક લિંક છે

ENOTDIR

પાથનામમાં ડિરેક્ટરી તરીકે ઉપયોગ કરતું એક ઘટક, વાસ્તવમાં, ડિરેક્ટરી નથી, અથવા O_DIRECTORY સ્પષ્ટ કરેલું હતું અને પાથનામ એ ડિરેક્ટરી નથી.

ENEXIO

O_NONBLOCK | O_WRONLY સુયોજિત થયેલ છે, નામવાળી ફાઇલ એક FIFO છે અને કોઈ પ્રક્રિયા વાંચવા માટે ફાઇલ ખુલ્લું છે. અથવા, ફાઇલ એક ઉપકરણ વિશેષ ફાઇલ છે અને કોઈ અનુરૂપ ઉપકરણ અસ્તિત્વમાં નથી.

ENODEV

પાથનામને ઉપકરણ વિશેષ ફાઇલનો સંદર્ભ આપે છે અને કોઈ અનુરૂપ ઉપકરણ અસ્તિત્વમાં નથી. (આ એક લીનક્સ કર્નલ ભૂલ છે - આ સ્થિતિમાં ENXIO પરત કરવું આવશ્યક છે.)

EROFS

પાથનામ ફક્ત વાંચી શકાય તેવા ફાઇલસિસ્ટમ પર ફાઇલને સંદર્ભિત કરે છે અને લખવા માટેની ઍક્સેસની વિનંતી કરવામાં આવી હતી.

ETXTBSY

પાથનામ એ એક્ઝેક્યુટેબલ ઈમેજનો ઉલ્લેખ કરે છે જે હાલમાં ચલાવવામાં આવી રહી છે અને ઍક્સેસની વિનંતી કરવામાં આવી છે.

EFAULT

પાથનુ નામ તમારા સુલભ સરનામાની જગ્યા બહાર નિર્દેશ કરે છે.

ELOOP

પથનામને ઉકેલવામાં ઘણી બધી સાંકેતિક લિંક્સ આવી હતી, અથવા O_NOFOLLOW નિર્દિષ્ટ કરવામાં આવી હતી પરંતુ પાથનામ એક સાંકેતિક લિંક હતું.

ENOSPC

પાથનામને બનાવવું હતું પરંતુ પથના નામ ધરાવતી ડિવાઇસ પાસે નવી ફાઇલ માટે કોઈ જગ્યા નથી.

ENOMEM

અપર્યાપ્ત કર્નલ મેમરી ઉપલબ્ધ હતી.

EMFILE

આ પ્રક્રિયામાં પહેલાથી જ મહત્તમ ફાઇલોની સંખ્યા ખુલ્લી છે.

ENFILE

સિસ્ટમ પર ખુલેલી ફાઇલોની કુલ સંખ્યા પરની મર્યાદા સુધી પહોંચી ગઇ છે.

માટે અનુકૂળ

એસવીઆર 4, એસવીઆઇડી, પોસિક્સ, એક્સ / ઓપન, બીએસડી 4.3, ઓ_નફોોલલો અને ઓ_ડિરેક્ટરી ફ્લેગ એ લિનક્સ- સ્પેસીફિક છે. તેમની વ્યાખ્યાઓ મેળવવા માટે એકને _GNU_SOURCE મેક્રો વ્યાખ્યાયિત કરવી પડી શકે છે.

પ્રતિબંધો

NFS અંતર્ગત પ્રોટોકોલમાં ઘણી અનિચ્છનીયતાઓ છે, જે O_SYNC અને O_NDELAY નો સમાવેશ થાય છે.

POSIX સિંક્રનાઇઝ કરેલ I / O ના ત્રણ અલગ અલગ પ્રકારોને પૂરા પાડે છે, જે ફ્લેગ O_SYNC , O_DSYNC અને O_RSYNC ને અનુરૂપ છે . વર્તમાનમાં (2.1.130) આ બધા Linux ના અંતર્ગત છે.