mfc 两个进程管道通信输出结果是乱码

mfc 两个进程管道通信输出结果是乱码,第1张

因为没有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脚本如何从管道里读取数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9541105.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存