मैं किसी अन्य प्रोग्राम (मैटलैब) के भीतर बाहरी प्रोग्राम (wgrib2) के आउटपुट को कैप्चर करने के लिए नामित पाइप का उपयोग कर रहा हूं। Matlab कोड नीचे है, और system
पाइप बनाने के लिए कमांड लाइन का उपयोग करता है। यहां मेरे प्रश्न हैं:mkfifo के साथ खोला गया पाइप नामित होना चाहिए और कैसे?
- क्या मुझे इसका उपयोग करने के बाद नामित पाइप
myfifo
बंद करना होगा? कोड चलाने के बाद यह जारी रहता है। - यदि
myfifo
को बंद करने की आवश्यकता है, तो इसे बंद करने का आदेश क्या है? - मैं कई बार नीचे कोड नमूना चला रहा हूं (> 1000), तो क्या यह ठीक है अगर मैं नामित पाइप का पुन: उपयोग करता हूं और अंत तक इसे बंद नहीं करता?
system('mkfifo myfifo'); % Make a named pipe myfifo
% Call the external program wgrib2 and dump its output to the named pipe myfifo
system('wgrib2.exe multi_1.glo_30m.hs.201212.grb2 -ij 1 165 -ij 1 166 > myfifo &');
fid = fopen('myfifo', 'r'); % Open the named pipe
a = fscanf(fid, '%c'); % Read the output as character
fclose(fid); % Close the "file" (myfifo still exists afterward)
यह उत्तर गलत है। 1: पाइप बंद करने के लिए प्रोग्राम वास्तव में * आवश्यकता * करते हैं। यदि खराब प्रोग्राम अपनी फाइलें बंद नहीं करते हैं तो भी वर्कस्टेशन खुले फाइलों से बाहर हो सकते हैं। 2: आप ** इसे हटाकर नामित पाइप बंद नहीं करते हैं। बंद करना और हटाना अलग-अलग संचालन हैं। – willkil
आप सही हैं। मैंने जन्म के लिए जवाब अपडेट किया है। –