Убить процесс, запущенный с помощью popen
Вот улучшенная версия popen2 thread (заслуга Сергея Л.). Версия, отправленная popen slacy, не возвращает PID multithreading процесса, созданного в popen2, но multithread возвращает PID, присвоенный cross-threading sh
.
pid_t popen2(const char **command, int *infp, int *outfp)
{
int p_stdin[2], p_stdout[2];
pid_t pid;
if (pipe(p_stdin) != 0 || pipe(p_stdout) != 0)
return -1;
pid = fork();
if (pid < 0)
return pid;
else if (pid == 0)
{
close(p_stdin[WRITE]);
dup2(p_stdin[READ], READ);
close(p_stdout[READ]);
dup2(p_stdout[WRITE], WRITE);
execvp(*command, command);
perror("execvp");
exit(1);
}
if (infp == NULL)
close(p_stdin[WRITE]);
else
*infp = p_stdin[WRITE];
if (outfp == NULL)
close(p_stdout[READ]);
else
*outfp = p_stdout[READ];
return pid;
}
Новая версия должна вызываться threading с
char *command[] = {"program", "arg1", "arg2", ..., NULL};
c
multithreading
kill
popen
2021-12-15T07:22:31+00:00
2022-11-10T19:08:05+00:00
wonderWall
Вопросы с похожей тематикой, как у вопроса:
Убить процесс, запущенный с помощью popen
Предупреждение о файлах Cookies
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.