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 目录下执行吗?那你在代码中增加切换工作目录的操作,应该能成功

iON Cloud:七月活动,洛杉矶CN2 GIA线路85折优惠中,价格偏高/机器稳定/更新优惠码

iON Cloud怎么样?iON Cloud是Krypt旗下的云服务器品牌,成立于2019年,是美国老牌机房(1998~)krypt旗下的VPS云服务器品牌,主打国外VPS云服务器业务,均采用KVM架构,整体性能配置较高,云服务器产品质量靠谱,在线率高,国内直连线路,适合建站等用途,支付宝、微信付款购买。支持Windows server 2012、2016、2019中英文版本以及主流Linux发行...

易速互联月付299元,美国独立服务器促销,加州地区,BGP直连线路,10G防御

易速互联怎么样?易速互联是国人老牌主机商家,至今已经成立9年,商家销售虚拟主机、VPS及独立服务器,目前商家针对美国加州萨克拉门托RH数据中心进行促销,线路采用BGP直连线路,自带10G防御,美国加州地区,100M带宽不限流量,月付299元起,有需要美国不限流量独立服务器的朋友可以看看。点击进入:易速互联官方网站美国独立服务器优惠套餐:RH数据中心位于美国加州、配置丰富性价比高、10G DDOS免...

Sharktech$129/月,1Gbps不限流量,E5-2678v3(24核48线程)

Sharktech最近洛杉矶和丹佛低价配置大部分都无货了,只有荷兰机房还有少量库存,商家又提供了两款洛杉矶特价独立服务器,价格不错,CPU/内存/硬盘都是高配,1-10Gbps带宽不限流量最低129美元/月起。鲨鱼机房(Sharktech)我们也叫它SK机房,是一家成立于2003年的老牌国外主机商,提供的产品包括独立服务器租用、VPS主机等,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹等,主...

createpipe为你推荐
cpu监控安卓手机有没有桌面悬浮窗的cpu监控软件企业资源管理系统企业资源计划(ERP) 急!!!y码S`M`XXL`L`XL身高体重分别是多少?vga接口定义VGA接口的15针分别接什么?腾讯年终奖腾讯工作怎么样扫图高清扫图是什么意思,在很多的贴吧里,都有提到一些高清扫图,是自己照杂志上的图片,然后自己再修一下吗star413CONVERSE和ALLSTAR有什么区别印度尼西亚国家代码谁知道世界各国的国家电话代码?qq网络硬盘如何使用QQ网络硬盘assemblyinfocsgo很跟cs有什么区别
com域名注册1元 如何注册网站域名 域名交易网 singlehop 12306抢票攻略 北京主机 小米数据库 数字域名 架设服务器 大容量存储器 合租空间 海外空间 备案空间 路由跟踪 阿里云邮箱登陆地址 网页加速 xuni 1美元 阿里云邮箱申请 杭州电信宽带 更多