Здравствуйте, ДимДимыч, Вы писали:
ДД>Здравствуйте, vao, Вы писали:
vao>>Есть сервер он пускает новым процессом диалог выбора и настройки, при этом сервер регистрирует ProcessId. Из диалога идет запуск ресурсоемкой задачки из некоторго списка. Она замещает процесс с диалогом и общаеться с сервером. Если использовать CreateProces то задачка получаеться с новым ProcessId и сервер ее неузнаёт.
ДД>каким образом задача общается с сервером? может не в идентификаторе процесса дело?
ДД>ведь в приведенном коде:
ДД>ДД>
ДД>i = fork();
ДД>switch (i)
ДД>{
ДД>case -1:
ДД>perror("LOADSEGY: fork");
ДД>return(0);
ДД>case 0:
ДД>freopen(logname, "w", stdout);
ДД>freopen(errlogname, "w", stderr);
ДД>execvp(*new_argv, new_argv);
ДД>perror("LOADSEGY: execvp");
ДД>_exit(0);
ДД>default:
ДД>waitpid(i, &stat, 0)
ДД>}
ДД>execvp() вызывается из дочернего процесса, а родительский ждет его завершения.
В процессе загруженном execvp() делаеться еще один execvp() зависящий от выбора пользователя.
Общаеться по очереди сообщений,одновременно может жить несколько таких процессов чтобы их различать используеться идентификатор процесса.