Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > процедуры и среды


Автор: azer88 19.10.2011, 14:51
Код


#include <Windows.h>
#include<iostream>
#include<process.h>
#include<time.h>
#include<string>
using namespace std;
#define TEXTSIZE 1024

struct ProcInfo
{
    char ProcName[TEXTSIZE];
    int procThroughput;
};
void runProcess(char*Name)
{
    STARTUPINFO si={0,};
    PROCESS_INFORMATION pi;
    HANDLE client=(HANDLE)CreateProcess(
        NULL,
        (LPSTR)Name,
        NULL,
        NULL,
        true,
        CREATE_NEW_CONSOLE,
        NULL,
        NULL,
        &si,
        &pi);
    if(client==INVALID_HANDLE_VALUE)
    {
        cout<<"Process creat failure"<<endl;
        exit(1);
    }

};
UINT WINAPI count(void *arg)
{
    static int a=0;
    cout<<(char*)arg<<endl;
    if((char*)arg=="1") runProcess("Child01.exe");
    if((char*)arg=="2") runProcess("Child02.exe");
    if((char*)arg=="3") runProcess("Child03.exe");
    a++;
    return 0;
}

int main()
{
    HANDLE hTread[3];
    int choiceNum;
    char loof='a';
    while(loof!='q'){
        system("cls");
        cout<<"Main Process"<<endl;
    hTread[0]=(HANDLE)_beginthreadex(NULL,0,count,"1",0,NULL);
    WaitForMultipleObjects(1,hTread,true,INFINITE);
    Sleep(10000);
    hTread[1]=(HANDLE)_beginthreadex(NULL,0,count,"2",0,NULL);
    WaitForMultipleObjects(2,hTread,true,INFINITE);
    Sleep(10000);
    hTread[2]=(HANDLE)_beginthreadex(NULL,0,count,"3",0,NULL);
    WaitForMultipleObjects(3,hTread,true,INFINITE);
    Sleep(10000);
    }
    return 0;
}


мне нужно вот что:
у меня есть 3 процесса первый пишет текст файл, второй читает и передает серверу, третий показывает что получил из второго все эти процессы должны быть в разных kонсолax. программа нормально работает но сейчас каждый thread создает новую процедуру и показывает все в новом окне  а мне нужно чтобы  только первый раз создалось 3 процедуры и потом был свич между процедурами.
как я могу это сделать?
P.s это не весь код

Автор: Dem_max 20.10.2011, 07:02
не особо из описания понятно что ты хочешь сделать

Автор: BorisVorontsov 22.10.2011, 18:30
Цитата(azer88 @  19.10.2011,  14:51 Найти цитируемый пост)
как я могу это сделать?

При вызове CreateProcess, в hStdOutput дочерних передавай хендл корневого процесса

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)