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

HostYun(月18元),CN2直连香港大带宽VPS 50M带宽起

对于如今的云服务商的竞争着实很激烈,我们可以看到国内国外服务商的各种内卷,使得我们很多个人服务商压力还是比较大的。我们看到这几年的服务商变动还是比较大的,很多新服务商坚持不超过三个月,有的是多个品牌同步进行然后分别的跑路赚一波走人。对于我们用户来说,便宜的服务商固然可以试试,但是如果是不确定的,建议月付或者主力业务尽量的还是注意备份。HostYun 最近几个月还是比较活跃的,在前面也有多次介绍到商...

Friendhosting,美国迈阿密机房新上线,全场45折特价优惠,100Mbps带宽不限流量,美国/荷兰/波兰/乌兰克/瑞士等可选,7.18欧元/半年

近日Friendhosting发布了最新的消息,新上线了美国迈阿密的云产品,之前的夏季优惠活动还在进行中,全场一次性45折优惠,最高可购买半年,超过半年优惠力度就不高了,Friendhosting商家的优势就是100Mbps带宽不限流量,有需要的朋友可以尝试一下。Friendhosting怎么样?Friendhosting服务器好不好?Friendhosting服务器值不值得购买?Friendho...

spinservers春节优惠:$149/月10Gbps圣何塞服务器-2*E5-2630Lv3 CPU,256G内存,2*1.6T SSD硬盘

spinservers是Majestic Hosting Solutions LLC旗下站点,商家提供国外服务器租用和Hybrid Dedicated等产品,数据中心包括美国达拉斯和圣何塞机房,机器默认10Gbps端口带宽,高配置硬件,支持使用PayPal、信用卡、支付宝或者微信等付款方式。农历春节之际,商家推出了几款特别促销配置,最低双路E5-2630Lv3机器每月149美元起,下面列出几款机器...

createpipe为你推荐
at89s52单片机AT89S52单片机和AT89C51单片机的区别qq博客怎么开QQ博客啊!遗传算法实例求助fortran语言编写的混合遗传算法例子那位大哥大姐有?审计平台什么是审计工具谷歌图片识别怎么通过一张GIF图在网上搜索出其出处(你们懂的...)以图搜图那个百度只找到了一模一样的..,有微信智能机器人微信群机器人是怎么实现的微信智能机器人有没有可以拉进微信群的聊天机器人微信智能机器人有一个人加我微信,他说他自己是图灵机器人,我想问一下这是啥软件怎么可以自动回复微信?单元测试规范单元测试用例该怎么写kjava谁能告诉我KJAVA是什么意思和普通的JAVA程序有什么区别?
美国虚拟主机推荐 个人注册域名 国外php主机 wordpress技巧 xen 商务主机 最好的空间 免费个人空间 怎样建立邮箱 softbank邮箱 如何用qq邮箱发邮件 支付宝扫码领红包 超级服务器 什么是web服务器 免费稳定空间 阿里云邮箱申请 apnic 789电视剧网 美国十大啦 WHMCS 更多