
因为没有client的代码,所以我只能猜测一下
ReadFile读出来的里面含有一些控制字符,这些控制字符导致了这样的结果
ps 你的Server端没有关闭hWrite喔,这样的话子进程关闭管道以后,ReadFile的循环好像也无法跳出(ReadFile会无限阻塞
try{ 异常代码 }catch(e){ e 就是异常对象啊! 你吧对象的内容保存带数据库! } 我上面的方法可能不是你想要的答案,但是一般保存异常内容都是这么做的。 你说的是不是直接找到所有异常的输出口 , 你在输出口那等着,把所有信息存入数据库。
首先脚本命令必须能够接收标准输入流命令。管道数据来自stdin,直接用变量接收即可:
cmdresult=`cat /dev/stdin`
也可以用数组和read循环读出来:
declare -a cmdresult
i=0
while read cmdresult[$i]
do
echo ${cmdresult[$i]}
let i+=1
done
*** 作系统中负责线程间通讯的东西叫管道。
管道(pipe)是进程用来通讯的共享内存区域。一个进程往管道中写入信息,而其它的进程可以从管道中读出信息。如其名,管道是进程间数据交流的通道。
管道技术一般采用Window API来实现,但C#本身方便的进程线程机制使工作变得简单
首先,我们可以通过设置Process类,获取输出接口,代码如下:
Process proc = new Process();
proc StartInfoFileName = strScript;
proc StartInfoWorkingDirectory = strDirectory;
proc StartInfoCreateNoWindow = true;
proc StartInfoUseShellExecute = false;
proc StartInfoRedirectStandardOutput = true;
proc Start();
然后设置线程连续读取输出的字符串:
eventOutput = new AutoResetEvent(false);
AutoResetEvent[] events = new AutoResetEvent[1];
events[0] = m_eventOutput;
m_threadOutput = new Thread( new ThreadStart( DisplayOutput ) );
m_threadOutputStart();
WaitHandleWaitAll( events );
线程函数如下:
private void DisplayOutput()
{
while ( m_procScript != null && !m_procScriptHasExited )
{
string strLine = null;
while ( ( strLine = m_procScriptStandardOutputReadLine() ) != null)
{
m_txtOutputAppendText( strLine + "\r\n" );
m_txtOutputSelectionStart = m_txtOutputTextLength;
m_txtOutputScrollToCaret();
}
ThreadSleep( 100 );
}
m_eventOutputSet();
}
m_txtOutputAppendText( strLine + "\r\n" );
m_txtOutputSelectionStart = m_txtOutputTextLength;
m_txtOutputScrollToCaret();
为了不阻塞主线程,可以将整个过程放到一个另一个线程里就可以了
可以这样:
-----------------------------------
代码1(适合一条一条执行的)
运行 ("cmd /c 代码", 假, )
例如:运行 ("cmd /c echo ooo", 假, )
------------------------------------
代码2(适合多条代码,会写到一个文件。)
写到文件 ("文件目录+名称带扩展名", 到字节集("第一行"+"第二行"+"第三行"))
运行运行 ("刚才输入的 文件目录+名称", 假, )
例如:
写到文件 ("C:\123bat", 到字节集("@echo off"+"pause"))
运行运行 ("C:\123bat", 假, )
以上就是关于mfc 两个进程管道通信输出结果是乱码全部的内容,包括:mfc 两个进程管道通信输出结果是乱码、如何用Java管道流截取控制台输出、shell脚本如何从管道里读取数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)