createpipe关于 CreateProcess 到指定目录下执行某个命令,如何指明路径
createpipe 时间:2021-06-05 阅读:(
)
VC如何利用匿名管道实现进程间通信?
void CParentProcessDlg::OnOK()
{
SECURITY_ATTRIBUTES SecurityPipe;
SecurityPipe.bInheritHandle = TRUE;
SecurityPipe.lpSecurityDescriptor = NULL;
SecurityPipe.nLength = sizeof(SECURITY_ATTRIBUTES);
if (CreatePipe(&m_hRead,&m_hWrite,&SecurityPipe,0))
{
STARTUPINFO strinfo;
memset(&strinfo,0,sizeof(STARTUPINFO));
strinfo.cb = sizeof(STARTUPINFO); strinfo.hStdInput = m_hRead;
strinfo.dwFlags = STARTF_USESTDHANDLES;
strinfo.hStdOutput = m_hWrite; PROCESS_INFORMATION procInfo;
memset(&procInfo,0,sizeof(PROCESS_INFORMATION)); CreateProcess(NULL,"ChildProcess.exe",&SecurityPipe,&SecurityPipe,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&strinfo,&procInfo);
char data[]="明日科技";
unsigned long len;
if (! WriteFile(m_hWrite,data,8,&len,NULL))
{
MessageBox("数据写入失败");
}
}
else
MessageBox("匿名管道62616964757a686964616fe4b893e5b19e31333332616364创建失败");
}
void CChildProcessDlg::OnButtonread()
{
HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
if (hInput != INVALID_HANDLE_VALUE )
{
char data[10];
memset(data,0,10);
unsigned long len;
int pos = ReadFile(hInput,data,10,&len,NULL);
m_Data = data;
UpdateData(FALSE);
CloseHandle(hInput);
}
}c++中管道问题,为什么 老是捕获不到printf 的数据
你虽然设置了STD_OUTPUT_HANDLE,但是并不是把它挂到stdout上了,所以printf仍然输出到console。
你需要做如下操作:
int hout = _open_osfhandle((long)hWrite, _O_TEXT);
FILE *fout = _fdopen(hout, "wt");
*stdout = *fout;
这样把hWrite挂给stdout,然后printf才会给hWrite输出。
还要注意的是要调用fflush(stdout)。
这是因为printf对标准输出是自动刷缓冲到设备的,但对重定向却不会,所以要自己手动刷。
关于 CreateProcess 到指定目录下执行某个命令,如何指明路径
以下是 CreateProcess 函数的原型
BOOL CreateProcess (
LPCTSTR lpApplicationName,
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation );
可以看得出来倒数第三个参数是设置当前程序的所在路径的,你不妨试一下,我一般用的是CreateProcessW,从参数看来,好像是一样的,这个我没有去深究,但是相对ShellExecute,CreateProcess还是与之不同的,这个我在实践中发现CreateProcess是由系统分配环境,然后具体怎么执行我就一下子说不清楚了,但是ShellExecute执行过程就是将文件名以及参数传递给DOS命令,然后由终端去运行,这个过程就有点类似于我们手动双击该EXE一样,
对了,LS的可以试一下,先将应用程序切换当前所在目录试一下,你不是说一定要在C:\Users\ai\\android-sdk-windows\tools
目录下执行吗?那你在代码中增加切换工作目录的操作,应该能成功
阿里云(aliyun)在这个月又推出了一个金秋上云季活动,到9月30日前,每天两场秒杀活动,包括轻量应用服务器、云服务器、云数据库、短信包、存储包、CDN流量包等等产品,其中Aliyun轻量云服务器最低60元/年起,还可以99元续费3次!活动针对新用户和没有购买过他们的产品的老用户均可参与,每人限购1件。关于阿里云不用多说了,国内首屈一指的云服务器商家,无论建站还是学习都是相当靠谱的。活动地址:h...
如果我们熟悉RAKsmart商家促销活动的应该是清楚的,每个月的活动看似基本上一致。但是有一些新品或者每个月还是有一些各自的特点的。比如七月份爆款I3-2120仅30美金、V4新品上市,活动期间5折、洛杉矶+硅谷+香港+日本站群恢复销售、G口不限流量服务器比六月份折扣力度更低。RAKsmart 商家这个月依旧还是以独立服务器和站群服务器为主。当然也包括有部分的低至1.99美元的VPS主机。第一、I...
PIGYun发布了九月份及中秋节特惠活动,提供8折优惠码,本月商家主推中国香港和韩国机房,优惠后最低韩国每月14元/中国香港每月19元起。这是一家成立于2019年的国人商家,提供中国香港、韩国和美国等地区机房VPS主机,基于KVM架构,采用SSD硬盘,CN2+BGP线路(美国为CUVIP-AS9929、GIA等)。下面列出两款主机配置信息。机房:中国香港CPU:1core内存:1GB硬盘:10GB...
createpipe为你推荐
迅雷地址转换下载地址转换 怎么把别人的资源转换成迅雷地址 并且下载文件名改成自己想要的名字匹配函数excel中vlookup函数的用法视频技术怎么做视频?awvAWV的转换器 要免费的 看好是AWV不是AMV遗传算法实例如何用C语言实现遗传算法的实际应用?微软操作系统下载微软的系统到哪下载kjavaJava与KJava有什么区别吗.?armv5te黑莓手机是什么操作系统重启springboardiphone如何关闭没电提示声音vod系统解释一下vod 电脑点歌系统/卡拉OK系统
免费虚拟空间 fc2新域名 美国vps评测 域名服务dns的主要功能为 enzu 新加坡服务器 百度云100as 空间打开慢 名片模板psd 12306抢票助手 日本空间 777te 谁的qq空间最好看 网站cdn加速 183是联通还是移动 699美元 域名评估 网游服务器 联通网站 中国电信测速器 更多