Вы можете использовать forkpty()
с exec()
для запуска отслеживаемой программы с ее параметрами. forkpty()
возвращает дескриптор файла, который перенаправляется в программы stdin и stdout. Все, что записано в дескриптор файла, является входом программы. Все, что написано программой, может быть прочитано из файлового дескриптора.
Вторая часть заключается в том, чтобы прочитать в цикле вывод программы и записать его в файл, а также распечатать его на стандартный вывод.
Пример:
pid = forkpty(&fd, NULL, NULL, NULL);
if (pid<0)
return -1;
if (!pid) /* Child */
{
execl("/bin/ping", "/bin/ping", "-c", "1", "-W", "1", "192.168.3.19", NULL);
}
/* Parent */
waitpid(pid, &status, 0);
return WEXITSTATUS(status);