पारंपरिक यूनिक्स व्याख्या पढ़ने जो कुछ बफ़र होने के बाद read
वापसी अवरुद्ध करने के लिए है एक पके हुए टीटी लाइन बफर के अंदर। एक नई लाइन की शुरुआत में, इसका मतलब read
0 लौटा रहा है (शून्य बाइट्स पढ़ रहा है), और आकस्मिक रूप से, 0-आकार read
सामान्य फाइलों पर फ़ाइल की स्थिति का अंत पता चला है।
यही कारण है कि पहले एक लाइन के बीच में EOF
बस लाइन की शुरुआत मजबूर करता है read
होने के लिए, सी क्रम पुस्तकालय फ़ाइल का अंत का पता नहीं लगा रही है। दोEOF
पंक्तियों में वर्ण 0-आकार के पढ़ने का उत्पादन करते हैं, क्योंकि दूसरा एक रिक्त बफर को read
पर एक एप्लिकेशन द्वारा मजबूर करता है।
$ cat
foo[press ^D]foo <=== after ^D, input printed back before EOL, despite cooked mode. No EOF detected
foo[press ^D]foo[press ^D] <=== after first ^D, input printed back, and on second ^D, cat detects EOF
$ cat
Some first line<CR> <=== input
Some first line <=== the line is read and printed
[press ^D] <=== at line start, ^D forces 0-sized read to happen, cat detects EOF
मुझे लगता है कि अपने सी क्रम पुस्तकालय अर्थ विज्ञान से ऊपर (वहाँ kernel32
कॉल के स्तर पर ^Z
का कोई विशेष हैंडलिंग, अकेले सिस्टम कॉल करते हैं विंडोज पर है) में वर्णित नकल। यही कारण है कि यह शायद इनपुट लाइन के बीच में ^Z^Z
के बाद ईओएफ का पता लगाएगा।
स्रोत
2013-01-21 11:00:17
उदाहरण नहीं देख सकता .. क्या आप यहां कोड पोस्ट कर सकते हैं? –
यह विंडोज शैल का "फीचर" है। यूनिक्स पर, आप Ctrl + D को दो बार टाइप करके लाइन के अंत में EOF टाइप कर सकते हैं; Ctrl + Z दो बार टाइप करने का प्रयास करें। (या फ़ाइल से इनपुट रीडायरेक्ट करें।) –
टाइपिंग Ctrl + Z दो बार या उससे अधिक काम नहीं करता है – Vorgin