मैं एक C# System.Diagnostics.Process प्रकार के माध्यम से ftp.exe cmd निष्पादित करता हूं। और प्रोग्रामेटिक रूप से "सहायता" कमांड दर्ज करने के बाद मैं "ftp.exe" आउटपुट प्राप्त करने के लिए निम्न कोड का उपयोग करता हूं। लेकिन मैं केवल परिणाम की पहली पंक्ति प्राप्त कर सकता हूं। और मैं कभी भी "अंत" आउटपुट भाग तक नहीं पहुंचता। पूरा कार्यक्रम अवरुद्ध लगता है।मुझे कोड द्वारा ftp.exe का आउटपुट क्यों नहीं मिल सकता है?
Process p = new Process();
p.StartInfo.FileName = @"C:\Windows\System32\ftp.exe";
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.UseShellExecute = false;
p.Start();
p.StandardInput.WriteLine("help");
Int32 c_int = p.StandardOutput.Read();
while (c_int != -1)
{
Char c = (Char)c_int;
Console.Write(c);
c_int = p.StandardOutput.Read();
}
Console.WriteLine("end");
हालांकि, मैं एक साधारण प्रोग्राम है जो केवल Console.WriteLine() का उपयोग अपनी stdout धारा के लिए कुछ उत्पादन लिखने के लिए लिखें। और मैं इसे उपरोक्त कोड के साथ परीक्षण करता हूं। यह बढ़िया काम करता है। मैं बस यह नहीं समझ सकता कि उपरोक्त कोड ftp.exe के साथ क्यों काम नहीं कर सकता है? मेरे SimpleConsoleOutput प्रोग्राम और "ftp.exe" के बीच एकमात्र अंतर यह है कि ftp.exe का अपना इंटरैक्टिव कमांड प्रॉम्प्ट है।
(--------------- नई प्रगति -----------------)
Here're की कुछ प्रगति मेरी व्यक्तिगत जांच
2 धागे stdin के लिए लिख सकते हैं और "ftp.exe" की stdout से पढ़ने के लिए लिखते हैं, और उत्पादन इस तरह है:
Commands may be abbreviated. Commands are:
Commands may be abbreviated. Commands are:
Commands may be abbreviated. Commands are:
....(exactly 16 times of above lines and then exactly 16 times of the following cmds list)
! delete literal prompt send
? debug ls put status
append dir mdelete pwd trace
...
और पिछले आदेशों सूची भी पूरा नहीं हुआ है।
ऐसा लगता है कि सहायता कमांड आउटपुट दो भागों में बांटा गया है।
1 हिस्सा है:
Commands may be abbreviated. Commands are:
2 हिस्सा है:
! delete literal prompt send
? debug ls put status
append dir mdelete pwd trace
...
और यह सब 1 भागों सभी 2 भागों से पहले "ftp.exe" की stdout धारा को wrtten कर रहे हैं । यह कैसे गड़बड़ है ?? आपकी टिप्पणियों के लिए आभार।
मैं "ftp.exe" के अन्य आदेश के साथ परीक्षण किया है, और यह "सहायता" आदेश
कि आपको ऐसा क्यों ftp.exe अगर आप इसे प्रयोग पर इरादा नहीं है के उत्पादन में रुचि रखते हैं? – CResults
हाय, CResults। मैं कंसोल अनुप्रयोगों के मानक स्ट्रीम के बारे में कुछ शोध कर रहा हूं। और ftp.exe मेरे प्रयोग लक्ष्यों में से एक है। – smwikipedia