#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
using namespace std;
#define BUFSIZE MAX_PATH
int _tmain(int argc, _TCHAR* argv[], _TCHAR* envv[])
{
TCHAR buf[MAX_PATH];
for(int i=0;envv;i++)
{
cout<<envv<<endl;
cout<<endl;
}
GetEnvironmentVariable(TEXT("COMPUTERNAME"),buf,MAX_PATH);
printf(TEXT("\nCOMPUTERNAME=%s"),buf);
SetEnvironmentVariable(TEXT("COMPUTERNAME"),TEXT("NewQ4"));
GetEnvironmentVariable(TEXT("COMPUTERNAME"),buf,MAX_PATH);
printf(TEXT("\nCOMPUTERNAME=%s"),buf);
GetCurrentDirectory(MAX_PATH, buf);
printf(TEXT("\nCurrent directory: %s"),buf);
SetCurrentDirectory(TEXT("C:\\"));
GetCurrentDirectory(MAX_PATH,buf);
printf(TEXT("\nCurrent directory: %s"),buf);
//-----------------------------The interoperability with the Child process------------------------------
SECURITY_ATTRIBUTES saProcess;
saProcess.bInheritHandle=TRUE;
saProcess.nLength = sizeof(saProcess);
saProcess.lpSecurityDescriptor = NULL;
cout<<endl;
STARTUPINFO si = { sizeof(si) };
GetStartupInfo(&si);
// TCHAR buffer[MAX_PATH];
PROCESS_INFORMATION pi;
DWORD dwExitCode;
TCHAR szCommandLine[]=TEXT("jnjn_child 13 20 34 45 12");
getch();
// Порождение дочернего процесса.
BOOL fSuccess=CreateProcess(NULL, szCommandLine, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
if(fSuccess)
{ getch();
// Закрытие дескриптора потока как только он больше не нужен
CloseHandle(pi.hThread);
// Приостанавливаем выполнение главного процесса до тех пор пока дочерний не завершился
WaitForSingleObject(pi.hProcess,INFINITE);
// Дочерний процесс завершен; получаем его код завершения.
GetExitCodeProcess(pi.hProcess,&dwExitCode);
// Закрываем дескриптор так как он больше не нужен.
CloseHandle(pi.hProcess);
}
else
cout<<"Failed creating the child process..."<<endl;
cout<<"The Child has returned '"<<dwExitCode<<"' value"<<endl;
getch();
return 0;
}
создание дочернего процесса. visual с++.
2. Передать дочернему процессу через командную строку определенные параметры (массив из пяти целых чисел).
3. В дочернем процессе осуществить вывод минимального из переданных параметров из родительского процесса и возврат его, как кода выхода в родительский процесс. Родительский процесс ожидает результата (окончания работы дочернего процесса) и выводит его на консоль.
помогите пожалуйста кодом) которым можно осуществить эти задачки.
1. функция создания дочерненего процесса-???
2. функция передачи доч. процессу параметров-???
Код:
и дочерний процесс:
Код:
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
using namespace std;
#define BUFSIZE MAX_PATH
int _tmain(int argc, TCHAR* argv[])
{getch();
DWORD x=0;
DWORD minValue=0;
minValue=_tstol(argv[1]);
sscanf(PSTR(argv[1]),"%u",&minValue);
printf(PSTR(argv[1]));
for(int i=0;i<argc;i++)
{
if(i>1)
{
x=_tstol(argv);
sscanf(PSTR(argv),"%u",&x);
if(x<minValue)minValue=x;
}
printf(argv);
}
return minValue;
}
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
using namespace std;
#define BUFSIZE MAX_PATH
int _tmain(int argc, TCHAR* argv[])
{getch();
DWORD x=0;
DWORD minValue=0;
minValue=_tstol(argv[1]);
sscanf(PSTR(argv[1]),"%u",&minValue);
printf(PSTR(argv[1]));
for(int i=0;i<argc;i++)
{
if(i>1)
{
x=_tstol(argv);
sscanf(PSTR(argv),"%u",&x);
if(x<minValue)minValue=x;
}
printf(argv);
}
return minValue;
}
подскажите в чем ошибка при компиляции не может запустить дочерний процесс, не пойму почему...
всю неделю бьюсь над этим кодом, помогите плз кто разбираться с доч.процессами а.