Open (system call)
મોટાભાગની ફાઇલ સિસ્ટમો માટે, પ્રોગ્રામ ઓપન સિસ્ટમ કોલનો ઉપયોગ કરીને ફાઇલ સિસ્ટમમાં ફાઇલની ઍક્સેસને શરૂ કરે છે. આ ફાઇલ (ફાઇલ ડિસ્ક્રીપ્ટર) સાથે સંકળાયેલા સંસાધનોની ફાળવણી કરે છે, અને એક હેન્ડલ આપે છે જેનો ઉપયોગ પ્રક્રિયા તે ફાઇલનો સંદર્ભ લેવા માટે કરશે. કેટલાક કિસ્સાઓમાં ઓપન પ્રથમ પ્રવેશ દ્વારા કરવામાં આવે છે. એક જ ફાઇલ ઘણી પ્રક્રિયાઓ દ્વારા એક સાથે ખોલી શકાય છે, અને તે જ પ્રક્રિયા દ્વારા પણ, ફાઇલ સંસ્થા અને ફાઇલસિસ્ટમ પર આધાર રાખીને, એક જ ફાઇલ માટે ઘણા ફાઇલ ડિસ્ક્રીપ્ટર્સમાં પરિણમે છે. ડિસ્ક્રિપ્ટર પરની કામગીરીઓ જેમ કે ફાઇલ પોઇન્ટરને ખસેડવું અથવા તેને બંધ કરવું સ્વતંત્ર છે-તે જ ફાઇલ માટે અન્ય ડિસ્ક્રિપ્ટરને અસર કરતી નથી. ફાઇલ પરની કામગીરીઓ, જેમ કે લેખન, અન્ય વર્ણનકર્તાઓ પરની કામગીરીઓ દ્વારા જોઈ શકાય છેઃ પછીનું વાંચન નવા લખેલા ડેટાને વાંચી શકે છે. ઓપન દરમિયાન, ફાઇલસિસ્ટમ બફર માટે મેમરી ફાળવી શકે છે, અથવા તે પ્રથમ કામગીરી સુધી રાહ જોઈ શકે છે. સંપૂર્ણ ફાઇલ પાથ ઉકેલાઈ ગયો છે. આમાં દૂરસ્થ યજમાન સાથે જોડાવાનો અને ઓપરેટરને સૂચિત કરવાનો સમાવેશ થઈ શકે છે કે દૂર કરી શકાય તેવું માધ્યમ જરૂરી છે. તેમાં સંચાર ઉપકરણની શરૂઆતનો સમાવેશ થઈ શકે છે. આ સમયે જો યજમાન અથવા માધ્યમ ઉપલબ્ધ ન હોય તો ભૂલ પરત આવી શકે છે. ફાઇલસિસ્ટમની અંદર ઓછામાં ઓછી ડિરેક્ટરીની પ્રથમ ઍક્સેસ કરવામાં આવે છે. જો પાથ (ડિરેક્ટરીઓ) ના ઉચ્ચ સ્તરના ઘટકો સ્થિત અથવા ઍક્સેસ કરી શકાતા નથી, તો સામાન્ય રીતે ભૂલ પરત કરવામાં આવશે. જો ફાઇલ અસ્તિત્વમાં હોવાની અપેક્ષા હોય અને તે અસ્તિત્વમાં ન હોય અથવા ફાઇલ પહેલેથી અસ્તિત્વમાં ન હોવી જોઈએ અને તે અસ્તિત્વમાં હોય તો ભૂલ પરત કરવામાં આવશે. જો ફાઇલ અસ્તિત્વમાં હોવાની અપેક્ષા છે અને તે કરે છે, તો ફાઇલ મેટા ડેટા અથવા એક્સેસ કંટ્રોલ સૂચિમાં પરવાનગી ફ્લેગ દ્વારા પ્રતિબંધિત ફાઇલ ઍક્સેસ, વિનંતી કરેલ પ્રકારની કામગીરી સામે માન્ય છે. આને સામાન્ય રીતે વધારાની ફાઇલસિસ્ટમ ઍક્સેસની જરૂર પડે છે, જો કે કેટલીક ફાઇલસિસ્ટમમાં મેટા-ફ્લેગ ડિરેક્ટરી માળખાનો ભાગ હોઈ શકે છે. જો ફાઇલ બનાવવામાં આવી રહી હોય, તો ફાઇલ સિસ્ટમ સંગ્રહની મૂળભૂત પ્રારંભિક રકમ અથવા ફાઇલ સિસ્ટમ ક્ષમતાઓના આધારે ચોક્કસ રકમ ફાળવી શકે છે. જો આ નિષ્ફળ જાય તો ભૂલ પરત કરવામાં આવશે. નવી એન્ટ્રી સાથે ડિરેક્ટરીને અપડેટ કરી શકાય છે અથવા ક્લોઝ કરવામાં ન આવે ત્યાં સુધી તેમાં વિલંબ થઈ શકે છે. ઓપન દરમિયાન થઈ શકે તેવી અન્ય વિવિધ ભૂલોમાં ડિરેક્ટરી અપડેટ નિષ્ફળતા, બિન-માન્ય બહુવિધ જોડાણો, મીડિયા નિષ્ફળતા, સંદેશાવ્યવહાર લિંક નિષ્ફળતા અને ઉપકરણ નિષ્ફળતાનો સમાવેશ થાય છે. વળતર મૂલ્યની હંમેશા તપાસ થવી જોઈએ અને ચોક્કસ ભૂલ માટે પગલાં લેવા જોઈએ. ઘણા કિસ્સાઓમાં પ્રોગ્રામિંગ લેંગ્વેજ-સ્પેસિફિક રન-ટાઇમ લાઇબ્રેરી ઓપન ફાઇલ સાથે સંબંધિત રન-ટાઇમ લાઇબ્રેરી સ્ટ્રક્ચરને શરૂ કરવા સહિત વધારાની ક્રિયાઓ કરી શકે છે. જલદી ફાઇલની જરૂર નથી, પ્રોગ્રામે તેને બંધ કરવી જોઈએ. આ રન-ટાઇમ લાઇબ્રેરી અને ફાઇલસિસ્ટમ બફરને ભૌતિક માધ્યમોમાં અપડેટ કરવાનું કારણ બનશે અને જો વિશિષ્ટ ઉપયોગની જરૂર હોય તો અન્ય પ્રક્રિયાઓને ડેટાને ઍક્સેસ કરવાની મંજૂરી આપશે. જો પ્રોગ્રામ રન-ટાઇમ એક્ઝિટને કૉલ કરે તો કેટલીક રન-ટાઇમ લાઈબ્રેરીઓ ફાઇલને બંધ કરી શકે છે. જો કાર્યક્રમ સમાપ્ત થાય તો કેટલીક ફાઇલસિસ્ટમ જરૂરી કામગીરીઓ કરી શકે છે. કર્નલ અથવા વીજળીની નિષ્ફળતાની સ્થિતિમાં આમાંથી કોઈ પણ થવાની સંભાવના નથી. આ ક્ષતિગ્રસ્ત ફાઇલસિસ્ટમ માળખાઓનું કારણ બની શકે છે, જેમાં વિશેષાધિકૃત અને લાંબી ફાઇલસિસ્ટમ ઉપયોગિતાઓને ચલાવવાની જરૂર પડે છે, જે દરમિયાન સમગ્ર ફાઇલસિસ્ટમ અપ્રાપ્ય હોઈ શકે છે. કોલ દલીલો ખોલો ફાઇલનું પાથનામ, ફાઇલ પર વિનંતી કરેલ ઍક્સેસનો પ્રકાર (વાંચો, લખો, ઉમેરો વગેરે). ), મોડ તરીકે ઓળખાતી ત્રીજી દલીલનો ઉપયોગ કરીને પ્રારંભિક ફાઇલ પરવાનગીની વિનંતી કરવામાં આવે છે. આ દલીલ ત્યારે જ સુસંગત છે જ્યારે નવી ફાઇલ બનાવવામાં આવી રહી હોય. ફાઇલનો ઉપયોગ કર્યા પછી, પ્રક્રિયાએ ક્લોઝ કોલનો ઉપયોગ કરીને ફાઇલને બંધ કરવી જોઈએ, જે ફાઇલના ફાઇલ ડિસ્ક્રીપ્ટરને બંધ કરવા માટે લે છે. કેટલીક ફાઇલસિસ્ટમ્સમાં ફાઇલને મુક્ત કરવાની મંજૂરી આપવાનો સ્વભાવ સામેલ છે. કેટલીક કોમ્પ્યુટર ભાષાઓમાં રન-ટાઇમ લાઈબ્રેરીઓનો સમાવેશ થાય છે જેમાં ચોક્કસ ફાઇલસિસ્ટમ માટે વધારાની કામગીરીનો સમાવેશ થાય છે. ઓપન (અથવા કેટલીક સહાયક દિનચર્યા) માં કી કદ, રેકોર્ડ કદ, જોડાણની ઝડપ માટે સ્પષ્ટીકરણો શામેલ હોઈ શકે છે. કેટલીક ખુલ્લી દિનચર્યાઓમાં ભૂલની સ્થિતિમાં અમલમાં મૂકવાના પ્રોગ્રામ કોડના સ્પષ્ટીકરણનો સમાવેશ થાય છે. પર્લ લેંગ્વેજ ફોર્મ ઓપન ફાઇલહેન્ડલ, MODE [, EXPR] ઉદાહરણ તરીકેઃ ઓપન (મારું $fh ",>", output.txt "); પર્લ ફાઇલ સાથે એરેને સાંકળવા માટે ટાઈઃ: ફાઇલ મોડ્યુલના ટાઈ ફંક્શનનો પણ ઉપયોગ કરે છે. ટાઈઃ: એનિડીબીએમ _ ફાઇલ ફંક્શન ફાઇલ સાથે હેશને સાંકળે છે. સી લાઈબ્રેરી પોસિક્સ વ્યાખ્યા ઓપન કોલને સી લેંગ્વેજ માટે પોસિક્સ સ્પષ્ટીકરણ દ્વારા પ્રમાણિત કરવામાં આવે છેઃ ઇન્ટ ઓપન (કોન્સ્ટ ચાર * પાથ, ઇન્ટ ઓફલેગ,./*, મોડ _ ટી મોડ */); ઇન્ટ ઓપનટ (ઇન્ટ એફ. ડી., કોન્સ્ટ ચાર * પાથ, ઇન્ટ ઓફલેગ,); ઇન્ટ ક્રિએટ (કોન્સ્ટ ચાર * પાથ, મોડ _ ટી મોડ); ફાઇલ * ફોપેન (કોન્સ્ટ ચાર * ફાઇલેનામને પ્રતિબંધિત કરે છે, કોન્સ્ટ ચાર * પ્રતિબંધિત કરે છે); પરત કરેલ મૂલ્ય એ ફાઇલ વર્ણનકર્તા છે જે પ્રક્રિયા વિશિષ્ટ માળખાના સંદર્ભમાં છે જેમાં અન્ય વસ્તુઓની સાથે, સ્થિતિ નિર્દેશક છે જે સૂચવે છે કે ફાઇલમાં કયા સ્થાન પર આગામી કામગીરી દ્વારા કાર્યવાહી કરવામાં આવશે. ઓપન-1 પરત કરી શકે છે જે ભૂલની વિગતવાર ભૂલ સાથે નિષ્ફળતા સૂચવે છે. ફાઇલ સિસ્ટમ તમામ ખુલ્લી ફાઇલોનું વૈશ્વિક કોષ્ટક પણ અપડેટ કરે છે જેનો ઉપયોગ ફાઇલ હાલમાં કોઈપણ પ્રક્રિયા દ્વારા ઉપયોગમાં છે કે કેમ તે નક્કી કરવા માટે થાય છે. ખોલવા માટેની ફાઇલનું નામ પાથ કરો. તેમાં ફાઇલ પાથનો સમાવેશ થાય છે જે વ્યાખ્યાયિત કરે છે કે ક્યાં, કઈ ફાઇલ સિસ્ટમમાં, ફાઇલ મળી આવે છે (અથવા બનાવવી જોઈએ). ઓપનએટ સંબંધિત માર્ગની અપેક્ષા રાખે છે. OFLAG વૈકલ્પિક પરિમાણો અને (<fcntl.h> માંથી) એક સાથે OR 'in દ્વારા રચાયેલી આ દલીલમાં વિકલ્પ પરિમાણોમાં નીચેનાનો સમાવેશ થાય છેઃ O _ APPEND ડેટા ફાઇલના અંતમાં જોડવામાં આવશે. ફાઇલની કામગીરી હંમેશા સ્થિતિ નિર્દેશકને ફાઇલના અંતમાં વ્યવસ્થિત કરશે. O _ CREAT ફાઇલ અસ્તિત્વમાં ન હોય તો તેને બનાવો; અન્યથા ખુલ્લી ફાઇલ ભૂલને ENOENT પર સેટ કરવામાં નિષ્ફળ જાય છે. O _ EXCL નો ઉપયોગ O _ CREAT સાથે થાય છે જો ફાઇલ પહેલેથી જ અસ્તિત્વમાં હોય, તો પછી નિષ્ફળ થાય છે, અને errno ને EEXIST પર સુયોજિત કરે છે. O _ TRUNC જો ફાઇલ પહેલેથી જ અસ્તિત્વમાં હોય તો તેની અગાઉની સામગ્રીને કાઢી નાંખો, તેને ખાલી ફાઇલમાં ઘટાડી દો. ઉપકરણ અથવા નામવાળી પાઇપ માટે લાગુ પડતી નથી. વધારાના ફ્લેગ અને ભૂલો ખુલ્લા કોલમાં વ્યાખ્યાયિત કરવામાં આવે છે. ક્રિએટ () ને આ રીતે લાગુ કરવામાં આવે છેઃ ઇન્ટ ક્રિએટ (કોન્સ્ટ ચાર * પાથ, મોડ _ ટી મોડ) {રીટર્ન ઓપન (પાથ, O _ WRONLY|O_CREAT |O_TRUNC, મોડ);} ફોપેન r, w, a અને + જેવા સ્ટ્રિંગ ફ્લેગનો ઉપયોગ કરે છે અને fgets, fputs અને fclose સાથે વપરાયેલ ફાઇલ પોઇન્ટર આપે છે. નવી ફાઇલ બનાવતી વખતે જ વૈકલ્પિક અને સુસંગત સ્થિતિ, ફાઇલ પરવાનગીઓને વ્યાખ્યાયિત કરે છે. આમાં માલિક, જૂથ અથવા બધા વપરાશકર્તાઓ દ્વારા ફાઇલને વાંચવી, લખવી અથવા ચલાવવાનો સમાવેશ થાય છે. મોડને કૉલિંગ પ્રક્રિયાના ઉમાસ્ક દ્વારા છુપાવવામાં આવે છેઃ ઉમાસ્કમાં સેટ કરેલા બિટ્સને મોડમાં સાફ કરવામાં આવે છે. ફાઇલ ડિસ્ક્રિપ્ટર પણ જુઓ-તે કેવી રીતે કાર્ય કરે છે અને ઓપન નોટ્સ સંદર્ભો સાથે સંબંધિત અન્ય કાર્યો ડબલ્યુ. રિચાર્ડ સ્ટીવન્સ દ્વારા યુનિક્સ પર્યાવરણમાં અદ્યતન પ્રોગ્રામિંગ અને સુમિતાભ દાસ દ્વારા યુનિક્સ ખ્યાલ અને એપ્લિકેશન સી. પોસિક્સ લાઇબ્રેરી સિસ્ટમ ઉદાહરણ તરીકે સી કોડવાળા લેખોને કૉલ કરે છે.