/dev/full
पर लिखकर एक परीक्षण सूट में एक त्रुटि त्रुटि उत्पन्न करना आसान है। क्या पढ़ने की त्रुटि उत्पन्न करने के लिए कोई अच्छी तकनीक है? मैं वर्तमान में read
ओवरराइड करने के लिए LD_PRELOAD का उपयोग कर रहा हूं लेकिन यह बहुत जटिल और गैर पोर्टेबल लगता है (नहीं कि/dev/full पोर्टेबल है ...)।एक पठन त्रुटि उत्पन्न करें
उत्तर
एक निर्देशिका से पढ़ने (पिछले जवाब में उल्लेख किया) के अलावा आप /proc/self/mem
को पढ़ने के लिए एक त्रुटि प्राप्त करने की कोशिश कर सकते हैं (यह आप लिनक्स पर एक EIO
मिलना चाहिए)। एक स्पष्टीकरण के लिए, कृपया देखें: https://unix.stackexchange.com/a/6302
अच्छी चाल है, लेकिन सावधान रहें कि '/ proc/self/mem' केवल तभी अच्छा है जब आप फ़ाइल की शुरुआत से पढ़ते हैं। यदि कार्यक्रम पहले खोजता है, तो यह गलती से मैप किए गए क्षेत्र में समाप्त हो सकता है। – Gilles
(ओएस एक्स) के अनुसार (2) मैनपेज के अनुसार, पढ़ें (2) एक त्रुटि उत्पन्न करेगा यदि "[ए] एन निर्देशिका को पढ़ने के लिए प्रयास किया जाता है।" इसलिए आप एक निर्देशिका खोल सकते हैं (2) एक निर्देशिका (सुनिश्चित करें कि प्रोट लेखन लिखने की अनुमति नहीं देता है, या यह एक त्रुटि फेंक देगा) और फिर इसे पढ़ने का प्रयास करें। ऐसा लगता है कि वहां सूचीबद्ध एकमात्र त्रुटि है जो 'सामान्य' परिस्थितियों में हो सकती है (यानि जानबूझकर फ़ाइल * स्ट्रक्चर तोड़ने जैसी कुछ करने के बिना)।
मुझे लगता है कि आप सी में कुछ (2) त्रुटियों या इस तरह की कुछ त्रुटियों के बारे में बात कर रहे हैं, लेकिन यहां तक कि एक उच्च स्तरीय भाषा में भी, आप एक निर्देशिका खोलने और इसे पढ़ने की कोशिश कर सकते हैं (हालांकि मैंने अभी इसे पायथन के साथ करने की कोशिश की है, और यह आपको निर्देशिका खोलने के लिए बहुत स्मार्ट है ...)
आप एक अवैध सूचक को भी बफर के रूप में पढ़ सकते हैं, जो एक -AFAULT लौटाएगा। कुछ की तरह:
read(fd, (char *)0, cout);
धन्यवाद सुजुकी
वह एक पठन त्रुटि उत्पन्न नहीं करेगा (EINVAL), लेकिन एक बफर पढ़ने के दौरान आपके सुलभ पता स्थान (EFAULT) के बाहर है। लेकिन आदमी 2 के अनुसार पढ़ा गया है कि थोड़ा बदलाव के साथ EINVAL को प्राप्त करना संभव होना चाहिए। लेकिन सवाल यह है कि "कोड को संशोधित किए बिना EINVAL कैसे प्राप्त करें, लेकिन एक रैपर का उत्पादन करना जो सभी रोचक गलतियों की स्थिति का अनुकरण करेगा"। – jpe
वास्तव में कोड को संशोधित नहीं किया जाना चाहिए और प्रक्रिया को फ़ाइल को सफलतापूर्वक खोलना चाहिए, एकाधिक I/O संचालन (दोनों पढ़ना और लिखना) करना चाहिए लेकिन फिर कुछ बाद के पढ़ने के लिए विफल होने के लिए किया जाना चाहिए। यह एक साधारण काउंटर को पढ़ने और कार्यान्वित करने के ओवरराइडिंग द्वारा किया जा सकता है ताकि एनएच रीड ऑपरेशन विफल हो जाए, लेकिन शेल स्क्रिप्ट से कुछ करना अच्छा होगा: 'kill -STOP $ pid; chmod 000 फ़ाइल; मारो -कंट $ पिड'।इसी तरह की स्थितियों में लिखने की त्रुटि प्राप्त करने का एक तरीका अच्छा होगा, क्योंकि लिखने के लिए/dev/full लिखना पहले लिखने में विफल रहता है। –
सभी प्रमुख इकाइयों पर काम करने वाला एक दृष्टिकोण एक छोटे से FUSE फाइल सिस्टम को लागू करना होगा। ईआईओ डिफ़ॉल्ट त्रुटि कोड है जब आपका उपयोगकर्ता स्पेस फाइल सिस्टम ड्राइवर कुछ गलत करता है, इसलिए इसे हासिल करना आसान है। Perl और Python बाइंडिंग दोनों शुरू करने के लिए उदाहरण के साथ आते हैं, आप जल्दी से एक फाइल सिस्टम लिख सकते हैं जो अधिकतर मौजूदा फाइलों को प्रतिबिंबित करता है लेकिन सावधानी से चुने गए स्थानों में ईआईओ इंजेक्ट करता है।
ऐसी मौजूदा फाइल सिस्टम है: petardfs (article), मुझे नहीं पता कि यह बॉक्स से कितनी अच्छी तरह से काम करता है।
ओह, +1: petardfs स्पष्ट रूप से करने के लिए सही बात है। –
- 1. पठन स्मृति
- 2. गैर-खाली पठन बफर
- 3. हैप्स्टैक एक पठन फ़ाइल प्रदर्शित करता है
- 4. त्रुटि प्राप्त करना: "inttemp का बुरा पठन!" टेसरेक्ट 2
- 5. पायथन - एक पाइप से सरल पठन लाइन
- 6. क्या हमें एक पठन-भारी अनुप्रयोग
- 7. पठन और लेखन एक्सएमएल फ़ाइल
- 8. रेल स्क्रिप्ट/त्रुटि उत्पन्न
- 9. साइटकोर वर्कबॉक्स उत्पन्न अजीब त्रुटि
- 10. एक पठन रसीद कैसे दबाया जा सकता है?
- 11. पठन कोड - सहायक विज़ुअलाइज़र और ब्राउज़र उपकरण
- 12. कैसे लिंक्डइन अमेज़न पठन सूची डेटा
- 13. एक यादृच्छिक उत्तल बहुभुज कैसे उत्पन्न करें?
- 14. एक बड़ा यादृच्छिक प्लानर ग्राफ़ उत्पन्न करें
- 15. एक विशेष ध्वनि आवृत्ति कैसे उत्पन्न करें?
- 16. एक .po फ़ाइल कैसे उत्पन्न करें?
- 17. किसी सेवा से एक लिंक उत्पन्न करें
- 18. "यादृच्छिक" कैसे उत्पन्न करें लेकिन "अद्वितीय" संख्याएं कैसे उत्पन्न करें?
- 19. बुला EXEC() त्रुटि उत्पन्न: संग्रहीत प्रक्रिया
- 20. WebClient उत्पन्न करता है (401) अनधिकृत त्रुटि
- 21. पीडीएफ कैसे उत्पन्न करें?
- 22. एक सत्यापन त्रुटि उत्पन्न होने पर जेएसएफ में इनपुट टेक्स्ट को हाइलाइट करें
- 23. यादृच्छिक प्रमाणपत्र उत्पन्न करें
- 24. परिवर्तन स्क्रिप्ट उत्पन्न करें
- 25. उत्पन्न करें मैक्रो
- 26. अद्वितीय आईडी उत्पन्न करें
- 27. एक सीपीपी मैक्रो में एक नई लाइन कैसे उत्पन्न करें?
- 28. एक क्रियालेख फ़ाइल से एक एसडब्ल्यूएफ फ़ाइल कैसे उत्पन्न करें?
- 29. एक ऑडियो फ़ाइल से एक वेवफ़ॉर्म छवि उत्पन्न करें
- 30. यूनिक्स: क्या होता है जब एक पठन फ़ाइल डिस्क्रिप्टर चुनते समय चयन करता है()
बस एक विचार, लेकिन परमिट के साथ फ़ाइल से पढ़ने के बारे में क्या 000 सेट? –
@ लोडमास्टर जो 'read' त्रुटि के बजाय' ओपन 'त्रुटि का कारण बनता है। –
क्या आप EINVAL के बाद हैं? – jpe