Я пытаюсь написать программу на C++, которая запустит новый процесс (какой-то скрипт, программа, команда), такой как daemon, и получит некоторую информацию от него (stdout). Я пытаюсь использовать popen(). Но подпроцесс завершается, когда основная программа завершена. Я не знаю, имеет ли C++ что-то простое в использовании, как Python (подпроцессор). Существует мой код:Подпроцессное сообщение. C++
#include <stdio.h>
#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
FILE *in;
char buff[512];
in = popen(argv[1], "r");
fgets(buff, sizeof(buff), in);
cout << buff;
}
P.S: & в конце исполнительной команды не помогает.
Добавить, что вход ('ARGV [1]') было то, что выход ('buff') было и то, что вы хотели вывод быть. Это поможет воспроизвести проблему. – Matt
Я бы сказал, что это не проблема связи. Когда родительский процесс останавливается, его дочерние процессы также прекращаются, если только они не принимают превентивные меры. Это стандартное поведение, ничего особенного в C/C++. Если ваш родительский процесс читается с 'in' до завершения дочернего процесса, это разрешит эту первую проблему. – Rene
Вы также можете ограничить теги для вашего вопроса операционными системами POSIX или Linux или любой другой ОС, на которую вы нацеливаете (например, Microsoft Windows имеет другой API для запуска дочернего процесса) – roalz