Skip to main content

Linux Command மற்றும் Unix கட்டளைகளை திறக்க

Anonim

கதைச்சுருக்கம்

#சேர்க்கிறது #சேர்க்கிறது #சேர்க்கிறது எண்ணாக திறந்த (நிலையான கரி * பாதை , எண்ணாக கொடிகள் ); எண்ணாக திறந்த (நிலையான கரி * பாதை , எண்ணாக கொடிகள் , mode_t முறையில் ); int creat (const char * பாதை , mode_t முறையில் );

விளக்கம்

திதிறந்த () கணினி அழைப்பு linux கட்டளை ஒரு pathname ஐ கோப்பு டிஸ்கிரிப்டரில் மாற்றும் (ஒரு சிறிய, அல்லாத எதிர்மறை முழு எண் படிக்க, எழுத, முதலியன). அழைப்பு வெற்றிகரமாக இருந்தால், கோப்பு விவரிப்பு செயல்முறைக்கு தற்போது திறக்கப்படாத மிக குறைந்த கோப்பு டிஸ்கிரிப்டரைக் கொடுக்கிறது. இந்த அழைப்பு புதிய திறந்த கோப்பை உருவாக்கும், வேறு எந்தவொரு செயல்முறையுடனும் பகிரப்படாது. (ஆனால் பகிரப்பட்ட திறந்த கோப்புகள் வழியாக எழலாம்போர்க்(2) சிஸ்டம் அழைப்பு) புதிய கோப்பு விவரிப்பு செயல்பட செயல்பாடுகளை முழுவதும் திறக்க அமைக்கப்படுகிறது (பார்க்கfcntl(2)). கோப்பு ஆஃப்செட் கோப்பின் தொடக்கத்திற்கு அமைக்கப்பட்டது.

அளவுரு கொடிகள் ஒன்றுO_RDONLY, O_WRONLY அல்லதுO_RDWR எந்த கோப்பினை படிக்கவும்-எழுதவும்-எழுதவும்-எழுதவும் எழுதவும் எழுதவும் எழுதவும், பிட்வைஸ்- அல்லது 'பூஜ்யம் அல்லது பின்வருவனவற்றில் அதிகமானவை:

O_CREAT

கோப்பு இல்லை என்றால் அது உருவாக்கப்படும். கோப்புகளின் உரிமையாளர் (பயனர் ஐடி) செயலாக்கத்தின் பயனுள்ள பயனர் அடையாளத்திற்கு அமைக்கப்பட்டது. குழு உரிமையாளர் (குழு ஐடி) செயல்பாட்டின் பயனுள்ள குழு ஐடி அல்லது பெற்றோர் கோப்பகத்தின் குழு ஐடி (கோப்பு முறை வகை மற்றும் மவுன்ட் ஆப்ஷன்ஸ், மற்றும் பெற்றோர் கோப்பகத்தின் முறை ஆகியவற்றைப் பொறுத்து, எ.கா. விருப்பங்கள் bsdgroups மற்றும் sysvgroups விவரித்தார் என ext2 கோப்பு முறைமை,ஏற்ற(8)).

O_EXCL

பயன்படுத்தும் போதுO_CREAT, கோப்பு ஏற்கனவே உள்ளது என்றால் அது பிழை மற்றும்திறந்த தோல்வியடையும். இந்த சூழலில், குறியீட்டு இணைப்பு உள்ளது, பொருட்படுத்தாமல் அதன் புள்ளிகள் எங்கே.O_EXCL NFS கோப்பு முறைமைகளில் உடைக்கப்படுகிறது, பூட்டுதல் பணிகளைச் செய்வதற்கு நம்பியிருக்கும் திட்டங்கள் ஒரு பந்தய நிலைமையைக் கொண்டிருக்கும். ஒரு பூட்டுப் பயன்படுத்தி அணு கோப்புப் பூட்டுதலுக்கான தீர்வு ஒரே fs (எ.கா., ஹோஸ்ட்பெயர் மற்றும் பைட் இணைத்தல்) இல் தனிப்பட்ட கோப்பை உருவாக்குவதாகும், பூட்டுப்பெயருக்கான இணைப்பை உருவாக்க இணைப்பை (2) பயன்படுத்தவும். என்றால்இணைப்பு () பூட்டு 0, பூட்டு வெற்றிகரமாக உள்ளது. இல்லையெனில், பயன்படுத்தவும் ஸ்டாட்(2) தனித்த கோப்பில் அதன் இணைப்பு எண்ணிக்கை 2 ஆக அதிகரித்துள்ளது என்பதை சரிபார்க்க, இதில் பூட்டு வெற்றிபெறுகிறது.

O_NOCTTY

என்றால் பாதை ஒரு முனை சாதனம் --- பார்க்கவும்TTY(4) --- செயல்முறை ஒன்று இல்லையென்றாலும் செயல்முறை கட்டுப்பாட்டு முனையாக மாறும்.

O_TRUNC

கோப்பு ஏற்கனவே உள்ளது மற்றும் ஒரு வழக்கமான கோப்பு மற்றும் திறந்த பயன்முறை எழுதும் எழுத்து (அதாவது, O_RDWR அல்லது O_WRONLY) இது நீளமாகக் குறைக்கப்படும். கோப்பு FIFO அல்லது டெர்மினல் சாதன கோப்பு என்றால், O_TRUNC கொடி புறக்கணிக்கப்படுகிறது. இல்லையெனில், O_TRUNC விளைவு குறிப்பிடப்படவில்லை. (பல லினக்ஸ் பதிப்புகளில் அது புறக்கணிக்கப்படும், பிற பதிப்புகள், அது ஒரு பிழை வரும்.)

O_APPEND

கோப்பு சேர்க்கப்பட்ட முறையில் திறக்கப்பட்டுள்ளது. ஒவ்வொருவருக்கும் முன்எழுத, கோப்பின் சுட்டிக்காட்டி கோப்பின் முடிவில் நிலைத்திருக்கும்lseek. O_APPEND ஒன்றுக்கும் மேற்பட்ட செயல்முறை ஒரு கோப்பில் ஒரு தரவு சேர்க்கிறது என்றால் NFS கோப்பு முறைமைகள் மீது சிதைந்த கோப்புகளை வழிவகுக்கும். NFS ஒரு கோப்பில் சேர்ப்பதற்கு ஆதரவளிக்காது, ஏனென்றால் கிளையன் கர்னல் அதை உருவகப்படுத்த வேண்டும், இது ஒரு ரேஸ் நிலையில் இல்லாமல் செய்ய முடியாது.

O_NONBLOCK அல்லதுO_NDELAY

முடிந்தவரை, கோப்பினைத் தடுக்கும் முறையில் திறக்கப்படும். இல்லைதிறந்த அல்லது திரும்பப் பெறும் கோப்பு டிஸ்கிரிப்டரில் எந்த அடுத்தடுத்த செயல்பாடுகளும் அழைப்பு அழைப்பு செயல்முறைக்கு காத்திருக்காது. FIFO களை கையாளுவதற்கு (குழாய்களின் பெயர்), மேலும் காண்கFIFO(4). இந்த பயன்முறை FIFO களைக் காட்டிலும் வேறு எந்த கோப்புகளையும் கொண்டிருக்கவில்லை.

O_SYNC

கோப்பு ஒத்திசைவு I / O க்கு திறக்கப்பட்டுள்ளது. எந்தஎழுததரவின் அடிப்படை வன்பொருள்க்கு எழுதப்பட்ட வரை, இதன் விளைவாக கோப்பு விவரம் அழைப்பு அழைப்பு செயல்முறையைத் தடுக்கிறது. கீழே உள்ள RESTRICTIONS ஐப் பார்க்கவும்.

O_NOFOLLOW

என்றால் பாதை ஒரு குறியீட்டு இணைப்பு, பின்னர் திறந்த தோல்வி. இது ஒரு FreeBSD நீட்டிப்பு ஆகும், இது லினக்ஸ் பதிப்பு 2.1.126 இல் சேர்க்கப்பட்டது. பாதையின் முந்தைய கூறுகளின் அடையாள இணைப்புகள் தொடர்ந்து பின்பற்றப்படும். 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) கணினி அழைப்பு, தரவு மாற்றப்பட்டுள்ளது உத்தரவாதம். பரிமாற்ற அளவுகள், மற்றும் பயனர் தாங்கல் மற்றும் கோப்பு ஆஃப்செட் ஆகியவற்றின் சீரமைவு அனைத்தும் கோப்பு முறைமை தருக்க தொகுதி அளவுகளின் மடங்காக இருக்க வேண்டும்.யுனிக்ஸ் போன்ற அமைப்புகளில் இந்த கொடி ஆதரிக்கப்படுகிறது; கர்னல் பதிப்பு 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 கோப்பு முறைமைகளில் இயக்கப்பட்டன,திறந்த கோப்பு டிஸ்கிரிப்டரை திரும்ப பெறலாம், ஆனால் எ.கா. படிக்க(2) கோரிக்கைகள் நிராகரிக்கப்படுகின்றனEACCES. ஏனெனில் கிளையண்ட் செயல்படுகிறதுதிறந்த அனுமதிகள் சோதனை மூலம், ஆனால் UID வரைபடத்தை சேவையால் வாசிக்க மற்றும் எழுத கோரிக்கைகள் செய்யப்படுகிறது.

கோப்பு புதிதாக உருவாக்கப்பட்டால், அதன் atime, ctime, mtime புலங்கள் தற்போதைய நேரத்திற்கு அமைக்கப்பட்டிருக்கும், மேலும் இது பெற்றோர் அடைவின் சிட்டி மற்றும் mtime துறைகள் ஆகும். இல்லையெனில், O_TRUNC கொடி காரணமாக கோப்பு திருத்தப்பட்டால், அதன் சிட்டி மற்றும் 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

பாதை ஒரு சாதனம் சிறப்பு கோப்பினை குறிக்கிறது மற்றும் அதனுடன் தொடர்புடைய சாதனம் இல்லை. (இது ஒரு லினக்ஸ் கர்னல் பிழை - இந்த நிலையில் 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 மேக்ரோ தங்கள் வரையறைகளை பெற.

கட்டுப்பாடுகள்

NFS அடிப்படையிலான நெறிமுறைகளில் பல infelicities உள்ளன, மற்றவர்களிடையே பாதிப்புO_SYNC மற்றும்O_NDELAY.

POSIX ஒத்திசைக்கப்பட்ட I / O இன் மூன்று மாறுபட்ட வகைகளுக்கு கொடிகளை ஒத்ததாக வழங்குகிறதுO_SYNC , O_DSYNC மற்றும் O_RSYNC. தற்போது (2.1.130) இவை அனைத்தும் லினக்ஸின் கீழ் ஒத்திருக்கின்றன.