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

易探云2核2G5M仅330元/年起,国内挂机宝云服务器,独立ip

易探云怎么样?易探云是国内一家云计算服务商家,致力香港服务器、国内外服务器租用及托管等互联网业务,目前主要地区为运作香港BGP、香港CN2、广东、北京、深圳等地区。目前,易探云推出深圳或北京地区的适合挂机和建站的云服务器,国内挂机宝云服务器(可选深圳或北京地区),独立ip;2核2G5M挂机云服务器仅330元/年起!点击进入:易探云官方网站地址易探云国内挂机宝云服务器推荐:1、国内入门型挂机云服务器...

轻云互联22元/月,美国硅谷、圣何塞CN2GIA云服务器,香港沙田cn2建站vps仅25元/月

轻云互联怎么样?轻云互联,广州轻云网络科技有限公司旗下品牌,2018年5月成立以来,轻云互联以性价比的价格一直为提供个人,中大小型企业/团队云上解决方案。本次轻云互联送上的是美国圣何塞cn2 vps(免费50G集群防御)及香港沙田cn2 vps(免费10G集群防御)促销活动,促销产品均为cn2直连中国大陆线路、采用kvm虚拟技术架构及静态内存。目前,轻云互联推出美国硅谷、圣何塞CN2GIA云服务器...

hosthatch:14个数据中心15美元/年

hosthatch在做美国独立日促销,可能你会说这操作是不是晚了一个月?对,为了准备资源等,他们拖延到现在才有空,这次是针对自己全球14个数据中心的VPS。提前示警:各个数据中心的网络没有一个是针对中国直连的,都会绕道而且ping值比较高,想买的考虑清楚再说!官方网站:https://hosthatch.com所有VPS都基于KVM虚拟,支持PayPal在内的多种付款方式!芝加哥(大硬盘)VPS5...

createpipe为你推荐
winhttp什么是WinHTTP网络审计什么叫网络会计师事务所防火墙排名什么防火墙世界第一啊?(急!!!)印度尼西亚国家代码手机上的国家代码是什么鄂n鄂A鄂B鄂C鄂D鄂E鄂F鄂G鄂H鄂J鄂K鄂L鄂M鄂N鄂P鄂Q鄂R鄂S鄂T鄂U分别代表湖北省的哪些城市熊猫烧香病毒下载谁知道熊猫烧香病毒微软操作系统下载怎么下载官方win10 64位镜像系统移动硬盘文件或目录损坏且无法读取移动硬盘提示文件或目录损坏且无法读取,怎么修复中信银行理财宝中信银行理财宝金卡怎样激活人脸识别解锁华为手机人脸识别解锁如何设置
移动服务器租用 我的世界服务器租用 linuxvps 汉邦高科域名申请 cybermonday 罗马假日广场 阿里云邮箱登陆首页 liquidweb bbr wordpress技巧 directadmin godaddy优惠券 iis安装教程 主机合租 服务器维护方案 seednet 双11秒杀 免费申请网站 七夕快乐英语 空间登入 更多