首页 新闻 会员 周边 捐助

win7环境下C++创建进程

0
[已解决问题] 解决于 2015-08-11 18:36

编写一段程序,创建两个子进程,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b” 和“c”。请问用C++该如何实现??谢谢了!

c++
讨教的主页 讨教 | 菜鸟二级 | 园豆:224
提问于:2014-04-15 20:08
< >
分享
最佳答案
0
#include <stdio.h>
#include <tchar.h>
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    TCHAR szCmdLine[480];
    int i;
    if(argc == 1)
    {
        memset(&si, 0, sizeof(STARTUPINFO));
        si.cb = sizeof(STARTUPINFO);
        si.dwFlags = STARTF_USESIZE;
        si.dwXSize = 160;
        si.dwYSize = 80;
        for(i = 0; i < 2; i++)
        {
            _stprintf_s(szCmdLine, _T("\"%s\" %c"),
                argv[0], _T('B') + i);
            if(CreateProcess(NULL, szCmdLine, 
                NULL, NULL, TRUE, 
                NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE,
                NULL, NULL, &si, &pi))
            {
                CloseHandle(pi.hThread);
                CloseHandle(pi.hProcess);
            }
        }
        putchar(_T('A'));
        getchar();
    }
    else
    {
        _tprintf(_T("%s"), argv[1]);
        getchar();
    }
    return 0;
}

 

这个问题挺无聊挺无意义的,不过如果给你一段示范代码,也许回答你的问题的效果更好是不是。

奖励园豆:5
hoodlum1980 | 小虾三级 |园豆:573 | 2015-03-07 19:27
其他回答(3)
-1

这个功能c语言都有,启动子进程用system指令,后面参数为进程路径好像,很久没用了。显示字符你总不会不会吧。

如果要研究创建进程,调用CreateProcess或其它api也可以呀

空明流光 | 园豆:111 (初学一级) | 2014-04-16 07:29

我看不懂CreateProcess函数后面参数的用法,能否给点指点?我C语言没学过,有C++的最好。谢谢了!

支持(0) 反对(0) 讨教 | 园豆:224 (菜鸟二级) | 2014-04-16 12:27

@讨教: 直接调用其实有些复杂,我也不经常调,没有现成例子,网上找一找吧。

支持(0) 反对(0) 空明流光 | 园豆:111 (初学一级) | 2014-04-24 18:08

@沧海一杰: 用其它的,比如:WinExec

Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long

支持(0) 反对(0) 空明流光 | 园豆:111 (初学一级) | 2014-04-24 18:09
1

    LPTSTR lpCommandLine="peocessDemo.exe";//子进程名
    STARTUPINFO si;
    memset(&si,0,sizeof(si));
    si.cb=sizeof(si);
    PROCESS_INFORMATION pi;
    //创建子进程
    int iRet =CreateProcess(NULL,lpCommandLine,   NULL,   NULL,  FALSE,NORMAL_PRIORITY_CLASS,   NULL,   NULL,   &si,   &pi);

 

上面是比较简单的用法,只要子进程名(若不在同目录下貌似要加上路径),子进程权限,还有最后一个参数,这3个参数一般够用了

Kee_Chen | 园豆:240 (菜鸟二级) | 2014-05-12 15:53
0

通过 GetCommandLine 获取执行参数 判断是否子进程

CreateProcess(NULL,pszCommandLine,...);通过pszCommandLine 传递执行参数

Nicolas Z | 园豆:202 (菜鸟二级) | 2014-08-20 14:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册