Форум программистов, компьютерный форум CyberForum.ru

Как не прерывая программу запустить процесс? - C++

Восстановить пароль Регистрация
 
comrade
Сообщений: n/a
24.07.2011, 11:25     Как не прерывая программу запустить процесс? #1
День добрый, есть проблема следующего плана:
Необходимо программно (по результатам выбора пользователя) последовательно запустить несколько .exe - файлов. При пользовании командой _execl запускается соответствующий процесс, но при этом вызывающая его программа завершается. Как можно запустить чужие процессы параллельно вызывающей программе?
Спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kolobok0
46 / 46 / 8
Регистрация: 24.01.2010
Сообщений: 225
24.07.2011, 13:35     Как не прерывая программу запустить процесс? #2
Рекомендую заглянуть в книгу 'Windows для проффесионалов' Рихтер.

(круглый)
xedin
Сообщений: n/a
24.07.2011, 14:20     Как не прерывая программу запустить процесс? #3
ShellExecute
comrade
Сообщений: n/a
24.07.2011, 14:54     Как не прерывая программу запустить процесс? #4
XEDIN - преогромнейшее спасибо!
Ghost
Сообщений: n/a
02.08.2011, 22:50     Как не прерывая программу запустить процесс? #5
comrade - ну это просто сенсация ))) ты документацию читаешь? )
вот выдержка из MSDN - обрати внимание на ПРЕДПОСЛЕДНЕЕ предложение.

Load and execute new child processes.

intptr_t _execl(
const char *cmdname,
const char *arg0,
... const char *argn,
NULL
);
intptr_t _wexecl(
const wchar_t *cmdname,
const wchar_t *arg0,
... const wchar_t *argn,
NULL
);
Parameters
cmdname
Path of file to be executed.
arg0, ... argn
List of pointers to parameters.
Return Value
If successful, these functions do not return to the calling process. A return value of –1 indicates an error, in which case the errno global variable is set.
xedin
Сообщений: n/a
03.08.2011, 12:26     Как не прерывая программу запустить процесс? #6
А зачем использовать функции, оставленные для переноса UNIX-кода в новом виндовом приложении?
UNIX Application Migration Guide:
Creating a process in UNIX using fork and exec

Код
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>

int main()
{
    pid_t pid;

    printf('Running ps with fork and execlp
');
    pid = fork();
    switch(pid) 
    {
    case -1:
        perror('fork failed');
        exit(1);
    case 0:
        if (execlp('ps', NULL) < 0) {
            perror('execlp failed');
            exit(1);
        }
        break;
    default:
        break;
    }
    printf('Done.
');
    exit(0);
}
You can port this code to Windows using the Win32 CreateProcess function discussed earlier, or by using a spawn function from the standard C runtime library. In both cases, the old and new processes run parallel, asynchronously.
Creating a process in Windows using CreateProcess
Код
#include <windows.h>
#include <process.h>
#include <stdio.h>

void main()
{
    STARTUPINFO    si;
    PROCESS_INFORMATION  pi;

    GetStartupInfo(&si);

    printf('Running Notepad with CreateProcess
');
    CreateProcess(NULL, 'notepad',  // Name of app to launch
  NULL,      // Default process security attributes
  NULL,      // Default thread security attributes
  FALSE,      // Don't inherit handles from the parent
  0,      // Normal priority
  NULL,      // Use the same environment as the parent
  NULL,      // Launch in the current directory
  &si,      // Startup Information
  &pi);      // Process information stored upon return

    printf('Done.
');
    exit(0);
}
Yandex
Объявления
03.08.2011, 12:26     Как не прерывая программу запустить процесс?
Ответ Создать тему
Опции темы

Текущее время: 00:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru