<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[CreateProcess() überschreibt STDOUT in Konsole?]]></title><description><![CDATA[<p>Ich habe folgenden Code der Systembefehle wie <strong>ipconfig, net view, ...</strong> startet:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;atlbase.h&gt;

using namespace std;

int execCommand(string str)
{		
	USES_CONVERSION;
	LPWSTR COMMAND = A2W(str.c_str()); 

	STARTUPINFO siStartupInfo;
	PROCESS_INFORMATION piProcessInfo;
	memset(&amp;siStartupInfo, 0, sizeof(siStartupInfo));
	memset(&amp;piProcessInfo, 0, sizeof(piProcessInfo));
	siStartupInfo.cb = sizeof(siStartupInfo);

	if(CreateProcess(NULL, COMMAND, 0, 0, FALSE, NORMAL_PRIORITY_CLASS, 0, 0, &amp;siStartupInfo, &amp;piProcessInfo))
	{
		WaitForSingleObject(&amp;piProcessInfo, 0);

		CloseHandle(piProcessInfo.hProcess);
		CloseHandle(piProcessInfo.hThread);

		return 1;
	}
	else
		return 0;
}

int main()
{
	do
	{
		cout &lt;&lt; &quot;Eingabe&gt;&gt;&quot;;
		string input, COMMAND;
		getline(cin, input);

		COMMAND = input;

		cout &lt;&lt; &quot;Befehl:[&quot; &lt;&lt; COMMAND &lt;&lt; &quot;]&quot; &lt;&lt; endl;

		execCommand(COMMAND);		

	}while(1);

	return 0;
}
</code></pre>
<p>Das Programm funktioniert aber es gibt ein Schönheitsfehler, ich hoffe ihr könnt mir helfen:<br />
Sobald ich ein Befehl wie z.B. <strong>ipconfig</strong> oder <strong>net view</strong> eingegebe so kommt die Ausgabe des jeweiligen Befehls, aber gleich hinter der Ausgabe müsste die Prompt Zeile ausgegeben werden <strong>Eingabe&gt;&gt;</strong>. Die PRompt Zeile wird nur erst Ausgegeben sobald ich einmal ENTER drücke.<br />
So müsste es normalerweise aussehen:</p>
<pre><code>[b]Eingabe&gt;&gt;[/b] [i]Befehl[/i]

[i]Ausgabe Befehl[/i]

[b]Eingabe&gt;&gt;[/b] [i]Befehl[/i]
</code></pre>
<p>Wenn ihr mich nicht ganz verstanden habt, dann testet bitte den Code testen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/168380/createprocess-überschreibt-stdout-in-konsole</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 14:10:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168380.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Dec 2006 12:57:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CreateProcess() überschreibt STDOUT in Konsole? on Thu, 21 Dec 2006 12:57:01 GMT]]></title><description><![CDATA[<p>Ich habe folgenden Code der Systembefehle wie <strong>ipconfig, net view, ...</strong> startet:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;atlbase.h&gt;

using namespace std;

int execCommand(string str)
{		
	USES_CONVERSION;
	LPWSTR COMMAND = A2W(str.c_str()); 

	STARTUPINFO siStartupInfo;
	PROCESS_INFORMATION piProcessInfo;
	memset(&amp;siStartupInfo, 0, sizeof(siStartupInfo));
	memset(&amp;piProcessInfo, 0, sizeof(piProcessInfo));
	siStartupInfo.cb = sizeof(siStartupInfo);

	if(CreateProcess(NULL, COMMAND, 0, 0, FALSE, NORMAL_PRIORITY_CLASS, 0, 0, &amp;siStartupInfo, &amp;piProcessInfo))
	{
		WaitForSingleObject(&amp;piProcessInfo, 0);

		CloseHandle(piProcessInfo.hProcess);
		CloseHandle(piProcessInfo.hThread);

		return 1;
	}
	else
		return 0;
}

int main()
{
	do
	{
		cout &lt;&lt; &quot;Eingabe&gt;&gt;&quot;;
		string input, COMMAND;
		getline(cin, input);

		COMMAND = input;

		cout &lt;&lt; &quot;Befehl:[&quot; &lt;&lt; COMMAND &lt;&lt; &quot;]&quot; &lt;&lt; endl;

		execCommand(COMMAND);		

	}while(1);

	return 0;
}
</code></pre>
<p>Das Programm funktioniert aber es gibt ein Schönheitsfehler, ich hoffe ihr könnt mir helfen:<br />
Sobald ich ein Befehl wie z.B. <strong>ipconfig</strong> oder <strong>net view</strong> eingegebe so kommt die Ausgabe des jeweiligen Befehls, aber gleich hinter der Ausgabe müsste die Prompt Zeile ausgegeben werden <strong>Eingabe&gt;&gt;</strong>. Die PRompt Zeile wird nur erst Ausgegeben sobald ich einmal ENTER drücke.<br />
So müsste es normalerweise aussehen:</p>
<pre><code>[b]Eingabe&gt;&gt;[/b] [i]Befehl[/i]

[i]Ausgabe Befehl[/i]

[b]Eingabe&gt;&gt;[/b] [i]Befehl[/i]
</code></pre>
<p>Wenn ihr mich nicht ganz verstanden habt, dann testet bitte den Code testen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196083</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Thu, 21 Dec 2006 12:57:01 GMT</pubDate></item><item><title><![CDATA[Reply to CreateProcess() überschreibt STDOUT in Konsole? on Thu, 21 Dec 2006 12:59:37 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">WaitForSingleObject(piProcessInfo.hProcess, INFINITE);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1196087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196087</guid><dc:creator><![CDATA[schön--]]></dc:creator><pubDate>Thu, 21 Dec 2006 12:59:37 GMT</pubDate></item><item><title><![CDATA[Reply to CreateProcess() überschreibt STDOUT in Konsole? on Thu, 21 Dec 2006 13:18:20 GMT]]></title><description><![CDATA[<blockquote>
<p>WaitForSingleObject(piProcessInfo.hProcess, INFINITE);</p>
</blockquote>
<p>Hat auch nicht viel oder garnix gebracht, wenn ich <strong>ipconfig</strong> ausführe wird die Prompt 2 mal ausgegeben und erst dann der Befehl.<br />
Hoffe jemand kann mir helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196102</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Thu, 21 Dec 2006 13:18:20 GMT</pubDate></item><item><title><![CDATA[Reply to CreateProcess() überschreibt STDOUT in Konsole? on Thu, 21 Dec 2006 13:30:09 GMT]]></title><description><![CDATA[<p>kernel64 schrieb:</p>
<blockquote>
<p>Hoffe jemand kann mir helfen.</p>
</blockquote>
<p>tausch nicht nur das 'INFINITE' aus, nimm die *ganze zeile* von 'schön--'<br />
:xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196109</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Thu, 21 Dec 2006 13:30:09 GMT</pubDate></item><item><title><![CDATA[Reply to CreateProcess() überschreibt STDOUT in Konsole? on Thu, 21 Dec 2006 19:33:15 GMT]]></title><description><![CDATA[<p>Ohhhhhh, ich hab gedacht im ersten Parameter steht das gleiche wie bei meinem Beispiel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Jetz klappts vielen Dank!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1196325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1196325</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Thu, 21 Dec 2006 19:33:15 GMT</pubDate></item></channel></rss>