编写一段程序,创建两个子进程,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b” 和“c”。请问用C++该如何实现??谢谢了!
#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; }
这个问题挺无聊挺无意义的,不过如果给你一段示范代码,也许回答你的问题的效果更好是不是。
这个功能c语言都有,启动子进程用system指令,后面参数为进程路径好像,很久没用了。显示字符你总不会不会吧。
如果要研究创建进程,调用CreateProcess或其它api也可以呀
我看不懂CreateProcess函数后面参数的用法,能否给点指点?我C语言没学过,有C++的最好。谢谢了!
@讨教: 直接调用其实有些复杂,我也不经常调,没有现成例子,网上找一找吧。
@沧海一杰: 用其它的,比如:WinExec
Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
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个参数一般够用了
通过 GetCommandLine 获取执行参数 判断是否子进程
CreateProcess(NULL,pszCommandLine,...);通过pszCommandLine 传递执行参数