निम्नलिखित सी फ़ाइल एक फर्जी परिणाम जब NUL इसे करने के लिए पहुंचाया जाता है देता है:का पता लगाने NUL फ़ाइल वर्णनकर्ता (isatty फर्जी है)
int main()
{
printf("_isatty = %d\n", _isatty(0));
}
परिणाम है:
C:\Users\Edward\Dev\nulltest> test.exe < NUL
_isatty = 64
मैं बहुत यकीन है कि एनयूएल (उर्फ/देव/शून्य) टर्मिनल डिवाइस नहीं है! इसलिए मुझे किसी अन्य तरीके से पता लगाने की आवश्यकता है कि फाइल डिस्क्रिप्टर एनयूएल के अनुरूप है या नहीं। संख्या का कोई विशिष्ट अर्थ नहीं है; मैं इसे देखता हूं जब वास्तव में एक टर्मिनल संलग्न होता है।
मुझे क्या करना चाहिए? This question अंतर्निहित नाम प्राप्त करने के लिए एक स्केची अनियंत्रित फ़ंक्शन का उपयोग करने का सुझाव देता है, संभवतः इसे एनयूएल से तुलना कर रहा है, लेकिन यह मेरे लिए आदर्श से कम महसूस करता है। क्या कोई बेहतर तरीका है?
पीएस इससे this GHC bug हल करने में मदद मिलेगी।
(और मैं यह नहीं कह रहा हूँ कि तुम क्या कर रहे हैं गलत है): तुम क्यों परवाह करते हैं जहां इनपुट आ से? – paxdiablo
ऐसे कई एप्लिकेशन हैं जो टर्मिनल का पता लगाने पर अलग-अलग चीजें करते हैं। उदाहरण के लिए, यदि आप 'पायथन' टाइप करते हैं, तो यह इंटरैक्टिव मोड में जाएगा, लेकिन 'echo "प्रिंट \" bar \ "" | पायथन 'प्रारंभिक स्क्रीन में से कोई भी नहीं दिखाएगा। –
मैं _hate_ उन कार्यक्रमों :-) – paxdiablo