का उपयोग मैं ओकैम के साथ यूनिक्स प्रोग्रामिंग में उपयोग करने के लिए छोटी उपयोगिता लिखने की कोशिश कर रहा हूं। यहाँ cat
के लिए मेरी कोशिश है:ओकैम में बिल्ली लिखना: यूनिक्स.read
open Unix ;;
let buffer_size = 10
let buffer = String.create buffer_size
let rec cat = function
| [] ->()
| x :: xs ->
let descr = openfile x [O_RDONLY] 0 in
let rec loop() =
match read descr buffer 0 buffer_size with
| 0 ->()
| _ -> print_string buffer; loop() in
loop();
print_newline();
close descr;
cat xs ;;
handle_unix_error cat (List.tl (Array.to_list Sys.argv))
ऐसा लगता है समस्या यह है कि, read
करने के लिए पिछले कॉल पर, बफर पूरी तरह से भर नहीं है के बाद से पढ़ने के लिए ज्यादा कुछ नहीं, क्या बफर पहले से निहित का अंत है कि भी मुद्रित हो जाता है। मैंने read
का उपयोग करके कुछ उदाहरण कोड पढ़े और वे बफर को फिर से भरने पर हर बार String.create
का उपयोग नहीं करते थे (जो, वैसे भी, अभी भी कुछ पात्रों के साथ इसे भरता है ...); तो मुझे क्या करना चाहिए? धन्यवाद।
मैं "यूनिक्स सिस्टम प्रोग्रामिंग के साथ यूनिक्स सिस्टम प्रोग्रामिंग" पढ़ रहा हूं, जो इस यूनिक्स मॉड्यूल के बारे में बात कर रहा है। क्या मुझे वास्तव में इससे बचना चाहिए? – rochem
@rochem यह आपके उद्देश्यों पर निर्भर करता है। वह कोर्स आपको यूनिक्स ज्ञान देगा कि आप अन्य भाषाओं में स्थानांतरित कर सकते हैं (एक बफर और बफर आकार पास कर सकते हैं और बदले में पढ़े गए वर्णों की संख्या प्राप्त करना सी में सामान्य तरीका है)। चूंकि ये कॉल सी कॉल को इतनी बारीकी से मेल खाते हैं, इसलिए वे सामान्य रूप से सामान्य कैमल प्रोग्रामिंग में कभी भी उपयोग नहीं किए जाते हैं, इसलिए यह कोर्स आपको सिखाएगा कि बेवकूफ ओकैम प्रोग्राम कैसे लिखना है। –