সংক্ষিপ্তসার
# অন্তর্ভুক্ত << একটি HREF = "ফাইল: /usr/include/sys/types.h"> sys / types.h> # অন্তর্ভুক্ত << একটি HREF = "ফাইল: /usr/include/sys/stat.h"> sys / stat.h> # অন্তর্ভুক্ত করুন < HREF = "ফাইল: /usr/include/fcntl.h"> fcntl.h> int খোলা (const গৃহস্থানত * পাথ নাম , ইন্ট ফ্ল্যাগ ); int খোলা (const গৃহস্থালি * পাথ নাম , ইন্ট ফ্ল্যাগে , মোড_টি মোড ); int creat (const char * pathname , mode_t মোড );বিবরণ
খোলা () সিস্টেম কল linux কমান্ডটি একটি ফাইল বর্ণনাকারী (একটি ছোট, অ-নেতিবাচক পূর্ণসংখ্যা পরবর্তী I / O হিসাবে পড়তে , লিখুন , ইত্যাদি) ব্যবহারের জন্য রূপান্তর করতে ব্যবহৃত হয়। কলটি সফল হলে, ফাইলটি বর্ণনাকারীর কাছে পাঠানো হবে সর্বনিম্ন ফাইলের বিবরণী যা বর্তমানে প্রসেসের জন্য খোলা নয়। এই কলটি একটি নতুন খোলা ফাইল তৈরি করে, অন্য কোনও প্রক্রিয়ার সাথে ভাগ করে না। (কিন্তু ভাগ খোলা ফাইল ফর্ক (2) সিস্টেম কল মাধ্যমে উঠা হতে পারে।) এক্সপ্লোর পরিচালনা ফাংশন (খোলা fcntl (2)) জুড়ে খোলা নতুন ফাইল বর্ণনাকারী সেট করা হয়। ফাইল অফসেট ফাইলের প্রারম্ভে সেট করা হয়
প্যারামিটার পতাকাগুলি O_RDONLY , O_WRONLY বা O_RDWR- এর মধ্যে একটি, যা শুধুমাত্র ফাইলটি কেবল পড়ার জন্য অনুরোধ করে, শুধুমাত্র লেখার জন্য বা পাঠ্য / যথাক্রমে, বিটওয়ারি- অথবা 'ডি এর সাথে শূন্য বা নিম্নলিখিতগুলির বেশি:
O_CREAT
ফাইলটি যদি বিদ্যমান না থাকে তবে এটি তৈরি করা হবে। ফাইলের মালিক (ইউজার আইডি) প্রক্রিয়াটির কার্যকরী ইউজার আইডিতে সেট করা হয়। গ্রুপ মালিকানা (গোষ্ঠী আইডি) প্রক্রিয়াটির কার্যকর গোষ্ঠী আইডি বা প্যারেন্ট ডিরেক্টরের গ্রুপ আইডি (ফাইলসিস্টেম টাইপ এবং মাউন্ট বিকল্প এবং প্যারেন্ট ডিরেক্টরী মোডের উপর নির্ভর করে) সেট করা হয়, যেমন, মাউন্ট মাউন্ট (8) বর্ণিত হিসাবে ext2 ফাইলস সিস্টেমের bsdgroups এবং sysvgroups অপশনগুলি
O_EXCL
O_CREAT এর সাথে ব্যবহার করা হলে, ফাইলটি ইতিমধ্যে বিদ্যমান থাকলে এটি একটি ত্রুটি এবং খোলা ব্যর্থ হবে। এই প্রসঙ্গে, একটি প্রতীকী লিঙ্ক বিদ্যমান, নির্বিশেষে যেখানে তার পয়েন্ট O_EXCL NFS ফাইল সিস্টেমে বিভক্ত হয়, লকিং কর্ম সঞ্চালনের জন্য এটিতে নির্ভর করে এমন প্রোগ্রামগুলির মধ্যে একটি রেস শর্ত থাকবে। একটি লকফাইল ব্যবহার করে পারমাণবিক ফাইলে লকিং করার সমাধানটি একই fs (যেমন হোস্টনেম ও পিআইডি অন্তর্ভুক্ত) এ একটি অনন্য ফাইল তৈরি করা, লকফিলের সাথে সংযোগ স্থাপনের জন্য লিঙ্ক (2) ব্যবহার করুন । যদি লিঙ্কটি () 0 ফেরত দেয়, তাহলে লক সফল হয়। অন্যথায়, অনন্য ফাইলের স্ট্যাট (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.19২6 এর আগে কার্নেলগুলি ব্যবহার করলে এটি উপেক্ষা করা হবে ।
O_DIRECTORY
যদি পাথ নামটি কোনও ডিরেক্টরি না হয়, তাহলে খুলতে ব্যর্থ হওয়ার কারণটি এই পতাকাটি লিনাক্স-ভিত্তিক, এবং কার্নেল সংস্করণ 2.1.126 তে যুক্ত করা হয়েছিল, যদি অপিফিন্দার (3) একটি ফিফো বা টেপ ডিভাইসে বলা হয় তবে অস্বীকৃতির পরিষেবা সমস্যাগুলি এড়ানোর জন্য, কিন্তু opendir বাস্তবায়নের বাইরে ব্যবহার করা উচিত নয় ।
O_DIRECT
এই ফাইল থেকে এবং থেকে I / O এর ক্যাশে প্রভাব কমানোর চেষ্টা করুন সাধারণভাবে এটি কার্য সম্পাদন হ্রাস করবে, তবে এটি বিশেষ পরিস্থিতিতে উপযোগী, যেমন যখন অ্যাপ্লিকেশনগুলি তাদের নিজস্ব ক্যাশে করে। ফাইল I / O সরাসরি ব্যবহারকারী স্পেস বাফার থেকে করা হয়। I / O সিঙ্ক্রোনাস, অর্থাৎ, (2) পড়া বা (2) সিস্টেম কল লিখতে হলে ডাটা স্থানান্তর করা নিশ্চিত করা হয়। মানচিত্র স্থানান্তর করুন, এবং ব্যবহারকারীর বাফারের প্রান্তিককরণ এবং ফাইল অফসেট অবশ্যই ফাইল সিস্টেমের লজিক্যাল ব্লক আকারের গুণক হওয়া উচিত।
এই পতাকা ইউনিক্স মত সিস্টেমের একটি সংখ্যা সমর্থিত; সমর্থন কার্নেল সংস্করণ 2.4.10 লিনাক্সে যোগ করা হয়েছে।
ব্লক ডিভাইসের জন্য একটি semantically অনুরূপ ইন্টারফেস কাঁচা (8) বর্ণনা করা হয়।
O_ASYNC
একটি সংকেত জেনারেট করুন (SIGIO ডিফল্টরূপে, কিন্তু এটি fcntl (2) এর মাধ্যমে পরিবর্তন করা যেতে পারে) যখন এই ফাইলের বর্ণনাকারীর উপর ইনপুট বা আউটপুট সম্ভব হয় এই বৈশিষ্ট্যটি শুধুমাত্র টার্মিনাল, ছদ্ম-টার্মিনাল এবং সকেটের জন্য উপলব্ধ। আরও বিস্তারিত জানার জন্য fcntl (2) দেখুন।
O_LARGEFILE
32-বিট সিস্টেমে যে বড় ফাইল সিস্টেম সমর্থন করে, ফাইল যার আকার 31 বিট খোলা যাবে প্রতিনিধিত্ব করা যাবে না অনুমতি।
ফাইলটি খোলা অবস্থায় ফ্যাসিটিএল ব্যবহার করে এই ঐচ্ছিক পতাকাগুলি পরিবর্তন করা যায় ।
আর্গুমেন্ট মোড একটি নতুন ফাইল তৈরি করা হলে ব্যবহারের অনুমতি জানায়। এটি প্রক্রিয়াটির উমাস্ক দ্বারা স্বাভাবিক ভাবে সংশোধন করা হয়: তৈরি ফাইলের অনুমতি (মোড এবং ~ উমাস্ক) । লক্ষ্য করুন যে এই মোড শুধুমাত্র নতুন তৈরি ফাইলের ভবিষ্যতে অ্যাক্সেসের জন্য প্রযোজ্য; খোলা কল যা শুধুমাত্র একটি পঠনযোগ্য ফাইল তৈরি করে, একটি পাঠ্য / লিখিত ফাইল বর্ণনাকারী ফিরে পেতে পারে।
নিম্নলিখিত প্রতীকী ধ্রুবক মোড জন্য প্রদান করা হয়:
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
0000২ জন অন্যদের লিখিত অনুমতি দিয়েছেন
S_IXOTH
00001 অন্যরা চালানো অনুমতি দিয়েছে
O_CREAT ফ্ল্যাগের মধ্যে মোডটি অবশ্যই নির্দিষ্ট করা উচিত, এবং অন্যথায় উপেক্ষা করা হবে।
সৃষ্টির সমতুল্য O_CREAT | O_WRONLY | O_TRUNC- এর সমান পতাকা সমেত ।
ফেরত মূল্য
খুলুন এবং নতুন ফাইলের বর্ণনাকারী ফেরত্ দিন , অথবা -1 যদি একটি ত্রুটি ঘটে (যা ক্ষেত্রে, ভুল সঠিকভাবে সেট করা হয়)। লক্ষ্য করুন যে খোলা ডিভাইস বিশেষ ফাইলগুলি খুলতে পারে, কিন্তু creat তাদের তৈরি করতে পারে না - পরিবর্তে mknod (2) ব্যবহার করুন
ইউআইডি ম্যাপিং সক্ষম সহ NFS ফাইল সিস্টেমে, খোলা একটি ফাইল বর্ণনাকারী প্রত্যাহার করতে পারে কিন্তু উদাহরণস্বরূপ পড়ুন (2) অনুরোধ EACCES সঙ্গে অস্বীকার করা হয়। এটি এজন্য কারণ ক্লায়েন্ট অনুমতিগুলি পরীক্ষা করে খোলা করে, কিন্তু ইউআইআইড ম্যাপিং সার্ভার দ্বারা পাঠ এবং অনুরোধ লিখুনের মাধ্যমে সঞ্চালিত হয়।
যদি ফাইলটি নতুন তৈরি হয় তবে এটির সময়, ctime, mtime ক্ষেত্রগুলি বর্তমান সময়ের মধ্যে নির্ধারিত হয়, এবং তাই মূল প্যারেন্ট ডিরেক্টরীর ctime এবং mtime ক্ষেত্রগুলি। অন্যথায়, যদি ফাইলটি O_TRUNC ফ্ল্যাডের জন্য সংশোধন করা হয়, তবে তার সিটিএমএল এবং মাইট ক্ষেত্রগুলি বর্তমান সময়ের জন্য নির্ধারিত হয়।
ত্রুটি
EEXIST
পাথনাম ইতিমধ্যে বিদ্যমান এবং O_CREAT এবং O_EXCL ব্যবহৃত হয়েছে।
EISDIR
pathname একটি ডিরেক্টরি এবং অনুরোধ জড়িত লেখার (যে, O_WRONLY বা O_RDWR সেট করা হয়) এক্সেস বোঝায়।
EACCES
ফাইলের জন্য অনুরোধ করা অ্যাক্সেস অনুমোদিত নয়, অথবা pathname- এর কোনও ডিরেক্টরি অনুসন্ধান (এক্সিকিউট) অনুমতির অনুমতি দেয়নি, অথবা ফাইলটি এখনও বিদ্যমান নয় এবং প্যারেন্ট ডিরেক্টরীতে অ্যাক্সেস লেখার অনুমতি নেই।
ENAMETOOLONG
পাথ নামটি অত্যন্ত দীর্ঘ ছিল।
ENOENT
O_CREAT সেট করা নেই এবং নামযুক্ত ফাইলটি বিদ্যমান নেই অথবা, পাথের একটি ডিরেক্টরি উপাদান বিদ্যমান নয় বা একটি ঝুঁকিপূর্ণ প্রতীকী লিঙ্ক।
ENOTDIR
Pathname- এ একটি ডিরেক্টরি হিসাবে ব্যবহৃত একটি কম্পোনেন্ট আসলে নয়, একটি ডিরেক্টরি, অথবা O_DIRECTORY নির্দিষ্ট করা হয়েছে এবং পাথ নামটি কোন ডিরেক্টরি নয়।
ENXIO
O_NONBLOCK | O_WRONLY সেট করা হয়, নামযুক্ত ফাইল একটি FIFO এবং কোনও প্রসেসটি পড়ার জন্য ফাইলটি খোলা আছে। অথবা, ফাইলটি একটি ডিভাইস বিশেষ ফাইল এবং কোনও সংশ্লিষ্ট ডিভাইস বিদ্যমান নেই।
ENODEV
পাথ নামটি একটি ডিভাইস বিশেষ ফাইল বোঝায় এবং কোনো সংশ্লিষ্ট ডিভাইস বিদ্যমান নেই। (এটি একটি লিনাক্স কার্নেল বাগ - এই অবস্থায় এন এন ইআইও ফিরে আসা আবশ্যক।)
EROFS
পাথ নামটি শুধুমাত্র একটি পঠনযোগ্য ফাইলসিস্টেমের ফাইল এবং লিখিত অ্যাক্সেসের অনুরোধ জানানো হয়েছিল।
ETXTBSY
pathname একটি এক্সিকিউটেবল ইমেজ বোঝায় যা বর্তমানে চালানো হচ্ছে এবং অ্যাক্সেস লিখতে অনুরোধ করা হয়েছিল।
EFAULT
আপনার অ্যাক্সেসযোগ্য ঠিকানা স্থান বাইরে pathname পয়েন্ট
ELOOP
পাথ নামটি সমাধান করার জন্য অনেকগুলি প্রতীকী লিঙ্কগুলি দেখা গেছে, বা O_NOFOLLOW নির্দিষ্ট করা হয়েছে কিন্তু পাথনাম একটি সিম্বলিক লিঙ্ক ছিল।
ENOSPC
পাথ নাম তৈরি করা ছিল কিন্তু পাথ নাম ধারণকারী ডিভাইসটি নতুন ফাইলের জন্য কোন জায়গা নেই।
ENOMEM
অপর্যাপ্ত কার্নেল মেমরি উপলব্ধ ছিল।
EMFILE
প্রক্রিয়াটি ইতিমধ্যেই সর্বাধিক সংখ্যা ফাইল খোলা আছে।
ENFILE
সিস্টেম খোলা মোট ফাইলের সংখ্যা উপর সীমা পৌঁছেছেন হয়েছে।
যাও কনফিগারিং
SVR4, SVID, POSIX, X / OPEN, BSD 4.3 লিনাক্সের O_NOFOLLOW এবং O_DIRECTORY ফ্ল্যাগগুলি হল স্পেসিফিক্স। তাদের সংজ্ঞা পেতে _GNU_SOURCE ম্যাক্রোকে সংজ্ঞায়িত করতে হতে পারে।
বিধিনিষেধ
NFS- র অন্তর্নিহিত প্রোটোকলের মধ্যে অনেক অস্পষ্টতা রয়েছে, যা অন্যদের মধ্যে O_SYNC এবং O_NDELAY এ প্রভাবিত করে।
POSIX সিঙ্ক্রোনাইজড I / O এর তিনটি ভিন্ন রূপ প্রদান করে, যা O_SYNC , O_DSYNC এবং O_RSYNC পতাকাগুলির সাথে সংশ্লিষ্ট। বর্তমানে (2.1.130) এই সমস্ত লিনাক্সের অধীনে সমার্থক হয়।