Linux కమాండ్ ఓపెన్ తెలుసుకోండి

సంక్షిప్తముగా

# sys / types.h> # చేర్చండి << ఒక HREF = "ఫైల్: /usr/include/sys/stat.h"> sys / stat.h> # చేర్చండి << ఒక HREF = "ఫైల్: /usr/include/fcntl.h"> fcntl.h> Int ఓపెన్ (కాన్ చార్ * పాత్ పేరు , పగటి పతాకాలు ); Int ఓపెన్ (కాన్స్ట్ చార్ * పాత్ పేరు , Int జెండాలు , మోడ్_ మోడ్ ); int creat (కాన్ చార్ * pathname , mode_t మోడ్ );

వివరణ

ఓపెన్ () సిస్టమ్ కాల్ linux ఆదేశం ఒక పాత్ పేరును ఫైలు వివరణగా మార్చటానికి ఉపయోగించబడుతుంది (తరువాతి I / O లో చదవటానికి , వ్రాయుటకు , మొదలైన వాటిలో ఉపయోగించటానికి ఒక చిన్న, నాన్-నెగెటివ్ పూర్ణాంకం). కాల్ విజయవంతం అయినప్పుడు, ఫైలు వర్ణన విధానంలో ప్రస్తుతం తెరవబడని అత్యల్ప ఫైల్ వర్ణనను విక్రయించింది. ఈ కాల్ కొత్త ఓపెన్ ఫైల్ను సృష్టిస్తుంది, ఏ ఇతర ప్రక్రియతో భాగస్వామ్యం చేయబడదు. (కానీ ఓపెన్ ఫైల్స్ ఫోర్క్ (2) సిస్టమ్ కాల్ ద్వారా ఉత్పన్నమవుతాయి.) కొత్త ఫైలు వర్ణన కార్యనిర్వహణ కార్యక్రమాలలో తెరవటానికి సిద్ధంగా ఉంది ( fcntl (2) చూడండి). ఫైలు ఆఫ్సెట్ ఫైల్ ప్రారంభంలో సెట్ చేయబడింది.

పారామితి జెండాలు O_RDONLY , O_WRONLY లేదా O_RDWR లలో ఒకటి, వీటిని రీడ్-ఓన్లీ, రాయడం-ఓన్లీ, రీడ్ / రాయండి, బిట్వైజ్- లేదా '

O_CREAT

ఫైలు లేకపోతే అది సృష్టించబడుతుంది. ఫైల్ యొక్క యజమాని (వినియోగదారు ID) ప్రక్రియ యొక్క ప్రభావవంతమైన వినియోగదారు ID కు సెట్ చేయబడింది. సమూహం యాజమాన్యం (సమూహం ID) ప్రక్రియ యొక్క సమర్థవంతమైన సమూహం ID లేదా పేరెంట్ డైరెక్టరీ సమూహం ID కు అమర్చబడుతుంది (ఫైల్ వ్యవస్థ రకం మరియు మౌంట్ ఎంపికల ఆధారంగా మరియు పేరెంట్ డైరెక్టరీ యొక్క మోడ్, ఉదా, మౌంట్ మౌంట్ (8) లో వివరించినట్లు ext2 ఫైల్సిస్టమ్ యొక్క bsdgroups మరియు sysvgroups .

O_EXCL

O_CREAT తో ఉపయోగించినప్పుడు, ఫైల్ ఇప్పటికే ఉన్నట్లయితే, ఇది లోపం మరియు ఓపెన్ విఫలమవుతుంది. ఈ సందర్భంలో, ఒక సంకేత లింక్ ఉంది, దానితో సంబంధం లేకుండా దాని పాయింట్లు. NFS ఫైల్ సిస్టమ్స్లో O_EXCL విభజించబడింది, లాక్ పనులను నిర్వహించడానికి దానిపై ఆధారపడిన ప్రోగ్రామ్లు రేస్ స్థితిని కలిగి ఉంటాయి. ఒక లాక్ ఫైల్ను ఉపయోగించి అటామిక్ ఫైల్ లాకింగ్ను నిర్వహించడానికి పరిష్కారం అదే ఫేజ్లో ఒక ఏకైక ఫైల్ (ఉదా., హోస్ట్ పేరు మరియు పిడ్ను చేర్చుట) సృష్టించడం, లాక్ఫైల్కు లింక్ను చేయడానికి లింక్ (2) ను ఉపయోగించండి. లింక్ () 0 ను వస్తే, లాక్ విజయవంతమైంది. లేదంటే, దాని లింక్ సంఖ్య 2 కు పెరిగితే తనిఖీ చేయడానికి ప్రత్యేకమైన స్టేట్stat (2) ని ఉపయోగించండి, ఈ సందర్భంలో లాక్ కూడా విజయవంతమైంది.

O_NOCTTY

పాత్పేరు ఒక టెర్మినల్ పరికరాన్ని సూచిస్తుంటే --- tty (4) --- చూడండి, ప్రాసెస్ని కలిగి లేనప్పటికీ అది ప్రక్రియ యొక్క నియంత్రణా టెర్మినల్ అవ్వదు.

O_TRUNC

ఫైలు ఇప్పటికే ఉన్నట్లయితే మరియు ఒక సాధారణ ఫైల్ మరియు ఓపెన్ మోడ్ వ్రాయడం అనుమతిస్తుంది (అంటే, O_RDWR లేదా O_WRONLY) ఇది పొడవు 0 కు తగ్గించబడుతుంది. ఫైల్ FIFO లేదా టెర్మినల్ పరికర ఫైలు అయితే, O_TRUNC జెండా విస్మరించబడుతుంది. లేకపోతే, O_TRUNC యొక్క ప్రభావం పేర్కొనబడలేదు. (అనేక Linux సంస్కరణల్లో ఇది విస్మరించబడుతుంది, ఇతర రూపాల్లో, ఇది లోపాన్ని తిరిగి ఇస్తుంది.)

O_APPEND

ఫైలు అనుబంధ రీతిలో తెరవబడింది. ప్రతి వ్రాసే ముందు, ఫైల్ పాయింటర్ ఫైల్ చివరిలో ఉంచబడుతుంది , అదే విధంగా స్క్రీజ్తో ఉంటుంది . ఒకటి కంటే ఎక్కువ ప్రక్రియ ఒకేసారి ఫైల్కు డేటాను అనుసంధానిస్తే, OFSAP వ్యవస్థలు NFS ఫైల్ సిస్టమ్స్లో పాడైన ఫైళ్ళకు దారి తీయవచ్చు. ఎన్ఎఫ్ఎస్ ఫైల్కు అనుసంధానించడానికి మద్దతు ఇవ్వదు కాబట్టి, క్లయింట్ కెర్నెల్ దానిని అనుకరించేది, ఇది ఒక రేసు స్థితి లేకుండా చేయలేము.

O_NONBLOCK లేదా O_NDELAY

వీలైతే, ఫైల్ నిరోధించని రీతిలో తెరవబడుతుంది. తిరిగి తెరిచిన ఫైల్ డిస్క్రిప్టులో ఏదైనా తదుపరి కార్యకలాపాలు ఏమాత్రం వేచి ఉండకపోవచ్చు. FIFOs (పైప్స్ అని పిలుస్తారు) నిర్వహణ కొరకు, ఫిఫో కూడా చూడండి (4). ఈ మోడ్ FIFO ల కంటే ఇతర ఫైళ్ళపై ఎటువంటి ప్రభావాన్ని కలిగి ఉండదు.

O_SYNC

ఫైలు సమకాలీకరణ I / O కోసం తెరవబడింది. సమాచార భౌతికంగా అంతర్లీన హార్డ్వేర్కు వ్రాసేవరకు ఏదైనా కాల్ ఫైల్ ప్రక్రియను కాలింగ్ విధానాన్ని బ్లాక్ చేస్తుంది. దిగువ RESTRICTIONS ను చూడండి.

O_NOFOLLOW

పాత్పేరు ఒక లాంఛనప్రాయ లింక్ అయితే, ఓపెన్ విఫలమైంది. ఇది FreeBSD పొడిగింపు, ఇది వెర్షన్ 2.1.0.0 లో లైనక్స్కు జోడించబడింది. పాత్ పేరు యొక్క మునుపటి భాగాలలో లాంఛనప్రాయ లింక్లు ఇప్పటికీ అనుసరించబడతాయి. Glibc 2.0.100 నుంచి వచ్చిన శీర్షికలు మరియు తర్వాత ఈ జెండా యొక్క నిర్వచనం ఉన్నాయి; 2.1.126 కి ముందు కెర్నలు ఉపయోగించినట్లయితే ఇది విస్మరిస్తుంది .

O_DIRECTORY

మార్గపేరు ఒక డైరెక్టరీ కాకపోతే, ఓపెన్ విఫలం కావచ్చు. ఈ జెండా Linux-specific, మరియు కెర్నెల్ వర్షన్ 2.1.126 నందు జతచేయబడింది, opendir (3) FIFO లేదా టేప్ పరికరముపై పిలువబడుతుంటే సేవలను తిరస్కరించుటకు నివారించుటకు, కానీ Opendir యొక్క అమలు వెలుపల ఉపయోగించకూడదు .

O_DIRECT

I / O యొక్క కాష్ ప్రభావాలను ఈ ఫైల్ నుండి మరియు దాని నుండి తగ్గించుటకు ప్రయత్నించండి. సాధారణంగా ఇది పనితీరును అధోకరణం చేస్తుంది, కాని ప్రత్యేక సందర్భాల్లో ఇది ఉపయోగకరంగా ఉంటుంది, అప్లికేషన్లు తమ సొంత క్యాచింగ్ చేసినప్పుడు. ఫైల్ I / O యూజర్ స్పేస్ బఫర్ల నుండి / నేరుగా చేయబడుతుంది. I / O సమకాలికమైనది, అనగా చదవడం (2) పూర్తయ్యాక లేదా (2) సిస్టమ్ కాల్, డేటా బదిలీ చేయబడిందని హామీ ఇవ్వబడుతుంది. బదిలీ పరిమాణాలు, మరియు వినియోగదారు బఫర్ మరియు ఫైల్ ఆఫ్సెట్ యొక్క అమరిక అన్ని ఫైల్ సిస్టమ్ యొక్క లాజికల్ బ్లాక్ పరిమాణాల గుణకాలుగా ఉండాలి.
ఈ జెండా అనేక Unix- వంటి వ్యవస్థలపై మద్దతు ఇస్తుంది; కెర్నల్ వర్షన్ 2.4.10 లో లైనక్సు కింద మద్దతు జతచేయబడింది.
బ్లాక్ పరికరాల కోసం అర్థ వివరణాత్మక ఇంటర్ఫేస్ ముడి (8) లో వివరించబడింది.

O_ASYNC

ఒక సిగ్నల్ (SIGIO అప్రమేయంగా సృష్టించుకోండి, కానీ దీనిని fcntl (2) ద్వారా మార్చవచ్చు) ఈ ఫైలు వర్ణనలో ఇన్పుట్ లేదా అవుట్పుట్ సాధ్యమవుతుంది. ఈ లక్షణం టెర్మినల్స్, నకిలీ-టెర్మినల్స్ మరియు సాకెట్ల కోసం మాత్రమే అందుబాటులో ఉంది. మరిన్ని వివరాలకోసం fcntl (2) ను చూడండి.

O_LARGEFILE

లార్జ్ ఫైల్స్ సిస్టంకు మద్దతు ఇచ్చే 32-బిట్ సిస్టమ్స్లో, 31 ​​బిట్స్ తెరవటానికి కావలసిన పరిమాణాల సంఖ్యను అనుమతించకూడదు.

ఫైల్ తెరిచిన తర్వాత ఈ ఐచ్ఛిక జెండాలు కొన్ని fcntl ను ఉపయోగించి మార్చబడతాయి .

వాదన మోడ్ కొత్త ఫైల్ సృష్టించిన సందర్భంలో ఉపయోగించడానికి అనుమతులను తెలుపుతుంది. ఇది సాధారణ పద్ధతిలో ప్రక్రియ యొక్క umask చే మార్పు చేయబడింది: సృష్టించిన ఫైల్ యొక్క అనుమతులు (మోడ్ & ~ 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 ఫ్లాగ్స్లో ఉన్నప్పుడు మోడ్ తప్పక పేర్కొనబడాలి మరియు లేకపోతే విస్మరించబడుతుంది.

సృష్టి O_CREAT | O_WRONLY | O_TRUNC కు సమానమైన ఫ్లాగ్లతో తెరవడానికి సమానం.

VALUE తిరిగి పొందండి

ఓపెన్ మరియు క్రియేట్ ఒక కొత్త దోషం సంభవించినప్పుడు, లేదా -1 ను తిరిగి పంపుతుంది (ఈ సందర్భంలో, తప్పులు సరిగ్గా అమర్చబడతాయి ). ఓపెన్ పరికర ప్రత్యేక ఫైళ్ళను తెరవగలనని గమనించండి , కానీ క్రియేట్ వాటిని సృష్టించలేరు - బదులుగా mknod (2) ను వాడండి.

UID మ్యాపింగ్తో NFS ఫైల్ సిస్టమ్స్ ఎనేబుల్ అయినప్పుడు , ఓపెన్ ఫైల్ వర్ణనను తిరిగి పొందవచ్చు, కాని ఉదా. EACCES తో (2) అభ్యర్ధనలు తిరస్కరించబడతాయి. క్లయింట్ అనుమతులు తనిఖీ చేయడం ద్వారా ఓపెన్ చేస్తున్నందున, UID మ్యాపింగ్ను చదవడం మరియు వ్రాసే అభ్యర్థనల ఆధారంగా సర్వర్ నిర్వహిస్తుంది.

ఫైలు కొత్తగా సృష్టించబడితే, దాని సమయము, 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 సెట్ చేయబడితే, పేరు పెట్టబడిన ఫైల్ FIFO మరియు ప్రాసెస్లో ఫైల్ చదవడం కోసం తెరవబడదు. లేదా, ఫైల్ పరికరం ప్రత్యేక ఫైలు మరియు సంబంధిత పరికరం లేదు.

ENODEV

పాత్ పేరు పరికర ప్రత్యేక ఫైలును సూచిస్తుంది మరియు సంబంధిత పరికరం లేదు. (ఇది లినక్స్ కెర్నల్ బగ్ - ఈ సందర్భంలో ఎన్సైయో తిరిగి పొందాలి.)

EROFS

రీడ్-ఓన్లీ ఫైల్సిస్టమ్పై పాత్ పేరు ఫైల్ను సూచిస్తుంది మరియు వ్రాసే యాక్సెస్ అభ్యర్థించబడింది.

ETXTBSY

పాత్ పేరు ప్రస్తుతం అమలు చేయబడుతున్న ఎక్జిక్యూటబుల్ ఇమేజ్ను సూచిస్తుంది మరియు వ్రాసే యాక్సెస్ అభ్యర్థించబడింది.

EFAULT

మీ ప్రాప్తి చేయగల చిరునామా స్థలానికి బయట ఉన్న మార్గం

ELOOP

పాత్ పేరు పరిష్కరించడంలో చాలా సింబాలిక్ లింక్లు ఎదురయ్యాయి, లేదా O_NOFOLLOW పేర్కొనబడింది కానీ పాత్ పేరు ఒక సింబాలిక్ లింక్.

ENOSPC

పాత్ పేరు సృష్టించబడవలసి ఉంది కానీ పాత్ పేరు కలిగివున్న పరికరము కొత్త ఫైలుకు గది లేదు.

ENOMEM

తగినంత కెర్నెల్ మెమరీ అందుబాటులో లేదు.

EMFILE

ప్రక్రియ ఇప్పటికే గరిష్ట సంఖ్య ఫైళ్ళను తెరిచి ఉంది.

ENFILE

వ్యవస్థలో తెరిచిన మొత్తం ఫైళ్ళ పరిమితి చేరుకుంది.

అనుగుణంగా

SVr4, SVID, POSIX, X / ఓపెన్, BSD 4.3 O_NOFOLLOW మరియు O_DIRECTORY జెండాలు Linux- ప్రత్యేకంగా ఉంటాయి. వారి వివరణలను పొందడానికి _GNU_SOURCE స్థూకాన్ని నిర్వచించవలసి ఉంటుంది.

పరిమితులు

ప్రోటోకాల్ అంతర్లీన NFS లో అనేక infelicities ఉన్నాయి, O_SYNC మరియు O_NDELAY ఇతరులలో ప్రభావితం.

POSIX OCYNC , O_DSYNC మరియు O_RSYNC జెండాలకు అనుగుణంగా సమకాలీకరించిన I / O యొక్క మూడు విభిన్న రకాలను అందిస్తుంది. ప్రస్తుతం (2.1.130) ఈ అన్ని Linux కింద పర్యాయపదంగా ఉన్నాయి.