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
目录下执行吗?那你在代码中增加切换工作目录的操作,应该能成功
Hostodo发布了几款采用NVMe磁盘的促销套餐,从512MB内存起,最低年付14.99美元,基于KVM架构,开设在拉斯维加斯机房。这是一家成立于2014年的国外VPS主机商,主打低价VPS套餐且年付为主,基于OpenVZ和KVM架构,产品性能一般,数据中心目前在拉斯维加斯和迈阿密,支持使用PayPal或者支付宝等付款方式。下面列出几款NVMe硬盘套餐配置信息。CPU:1core内存:512MB...
RFCHOST,这个服务商我们可能有一些朋友知道的。不要看官网是英文就以为是老外服务商,实际上这个服务商公司在上海。我们实际上看到的很多商家,有的是繁体,有的是英文,实际上很多都是我们国人朋友做的,有的甚至还做好几个品牌域名,实际上都是一个公司。对于RFCHOST商家还是第一次分享他们家的信息,公司成立大约2015年左右。目前RFCHOST洛杉矶机房VPS正进行优惠促销,采用CN2优化线路,电信双...
简介华圣云 HuaSaint是阿里云国际版一级分销商(诚招募二级代理),专业为全球企业客户与个人开发者提供阿里云国际版开户注册、认证、充值等服务,通过HuaSaint开通阿里云国际版只需要一个邮箱,不需要PayPal信用卡,不需要买海外电话卡,绝对的零门槛,零风险官方网站:www.huasaint.com企业名:huaSaint Tech Limited阿里云国际版都有什么优势?阿里云国际版的产品...
createpipe为你推荐
cpu监控win10自带cpu温度监控y码女款衣服XXL、XL、XXXL尺码分别是多大?assemblyinfo关于ASP.NET中使用log4net记录日志网站建立需要多少钱创立网站要多少钱kjava谁能告诉我KJAVA是什么意思和普通的JAVA程序有什么区别?bt代理为什么用代理下载BT非常非常慢啊?软件开发技术文档软件开发项目中,过程管理文档都包括什么?视频比特率是什么求解:视频格式搞成720p(1280 * 720),MP4,码率是10MB什么意思,详细点~smo优化vivo手机一直反复优化要怎么弄?smo优化vivo手机一直自动优化是怎么回事
网站空间申请 深圳域名空间 美国主机推荐 网站监控 lighttpd 京东商城双十一活动 申请个人网站 有奖调查 秒杀汇 idc查询 ca187 360云服务 网购分享 网站加速软件 后门 阿里云个人邮箱 accountsuspended 标准机柜 删除域名 美国vpn服务器 更多