Люди, нужна помощь... Чего-то не могу понять, как запустить какой-нить exefile из приложения и получить результат его работы. Под Win все просто:
unsigned long flag = 0;
STARTUPINFO si = {0};
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
// app_name - path for executable file
// app_param - params for executable file
app_<<app_name<<" "<<app_param;
BOOL r = CreateProcess(NULL,(char*)app_.str().c_str(),NULL,NULL,FALSE,flag,NULL,NULL,&si,&pi);
WaitForSingleObject( pi.hProcess, INFINITE );
if (r == 0) {
unsigned long returned = GetLastError();
cout<<"CreateProcess failed, error = "<<returned;
return -1;
}
DWORD ExitCode;
BOOL bRes = FALSE;
if(pi.hProcess)
bRes = GetExitCodeProcess(pi.hProcess, &ExitCode);
if(!bRes){
cout<<"GetExitCodeProcess failed";
return -1;
}
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
return ExitCode;
Кто-нить делал такое под Линукс? Я чего-то не могу понять
CreateProcess Linux
почитал. вроде как понятно, как запустить proccess. Но вопростом остается результат работы child:
switch(child_pid=fork()){
case (pid_t)-1;//error
break;
case (pid_t)0;//child
execv(/tmp/exec_app,............);
_exit(10);
default:
pid = waitpid(child_pid,&status,0);
}
после такого, в status положится '10' ( _exit(10) ). Но мне надо чтобы в родителе я получил результат, который возвращает main() exec_app!
GetExitCodeProcess(pi.hProcess, &ExitCode) в WIN32 именно это и возвращает. как быть? ето вообще возможно? я имею ввиду без использования файла, например, в который exec_app запишет рузультат, а родитель потом его прочитает от туда....
switch(child_pid=fork()){
case (pid_t)-1;//error
break;
case (pid_t)0;//child
execv(/tmp/exec_app,............);
_exit(10);
default:
pid = waitpid(child_pid,&status,0);
}
после такого, в status положится '10' ( _exit(10) ). Но мне надо чтобы в родителе я получил результат, который возвращает main() exec_app!
GetExitCodeProcess(pi.hProcess, &ExitCode) в WIN32 именно это и возвращает. как быть? ето вообще возможно? я имею ввиду без использования файла, например, в который exec_app запишет рузультат, а родитель потом его прочитает от туда....