Нужно запустить дочерний процесс и дождаться от него данных. Ну например, командную строку, с командой ping , и получить результат. Есть такие вопросы: 1. Как это правильно делать в линукс? На винде будет CreateProcess / CreateThread, а тут как? fork , и в нем if (проверка дочерний или родительский процесс). Или потоки - как понял, потоки в линуксах не особо котируются?
2. Как дождаться всех данных от программы? Допустим
char buf[1024] = { 0 };
FILE *p = popen("ping ya.ru -c 3", "r");
if (p)
{
fread(buf, 1, 1024, p);
puts(buf);
}
pclose(p);
3. Правильный ли подход код выше, или лучше создавать pipe ? Можно ли передать handle от pipe в другую программу (не в свою, где fork , а именно вот в левую, типа bash ? ) чтобы ответ пришел туда, а не в STDOUT.