永发信息网

windows下C++如何创建新进程(注意是进程不是线程)?

答案:2  悬赏:30  手机版
解决时间 2021-01-25 07:47
windows下C++如何创建新进程(注意是进程不是线程)?
最佳答案
API CreateProcess(...) 例子MSDN上就有。
#include <windows.h>
#include <stdio.h>
#include <tchar.h>

void _tmain( int argc, TCHAR *argv[] )
{
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );

if( argc != 2 )
{
printf("Usage: %s [cmdline]\n", argv[0]);
return;
}

// Start the child process. if( !CreateProcess( NULL, // No module name (use command line)
argv[1], // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi ) // Pointer to PROCESS_INFORMATION structure
)
{
printf( "CreateProcess failed (%d).\n", GetLastError() );
return;
}

// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );

// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
全部回答
不要使用同步线程;可以通过异步消息机制,在子线程建立消息环进行“顺序”处理(这需要根据你的实际业务需求来决定)或者每次开启单独的子线程;如果你描述的是偶尔发生的情况,那么怎么处理都是可以的(只要不是同步线程),如果情况是频繁发生甚至一直这样,那么你应该调整你的业务逻辑。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
家里出了交通事故把人撞死了现在没钱赔给对方
根据《水电建设工程质量管理暂行办法》(电水
内嵌电视墙不挂电视还能做什么
宠物青蛙可以和鱼一起养吗
张掖宾馆地址在什么地方,想过去办事
为什么小时候和我从小玩到大的一个好朋友长大
2019年小学语文配套单元评价六年级上册人教版
这个磁铁是干什么用的?进来看图.
我的准驾证用 b2驾驶证办的开挂车行吗?
流放之路新角色怎么快速升级
剩下的猪肉大葱饺子怎么做水煎包
魔兽世界猎人身上着火的野猪在哪抓
如图所示为人体的生命活动调节示意图,下列有
有个奇怪的问题,为什么论坛要屏蔽这两个字?
丰台区青塔西路附近便宜点的网吧。太贵了吧3-
推荐资讯
死神来了2那些幸存者和180事故有什么关系
一亩地产多少斤核桃,核桃亩产量,核桃亩产多
本溪满族自治县体育舞蹈培训中心怎么去啊,我
狮子兔和垂耳兔哪个好
金品秀地址有知道的么?有点事想过去
滴滴打车合法吗?它是不是还没有注册?私家车
1990年的两元人民币,现在值多少钱??
广汽吉奥延安坤祥店地址有知道的么?有点事想
我家窗户沿上有大黄蜂磊蜂窝,是好事还是坏事
嵩县洛阳顶头尚丝地址是什么,有没有知道的
证券公司应当在代销合同签署后( )个工作日
非法吸收公众存款罪公安局最多可扣押人多少天
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?