Необходимо запустить из проги на С++ внешнюю программу, например перловый скрипт. И получить результат работы скрипта в переменную в программе. Как запустить скрипт вопроса нет, это достаточно много где хорошо описано, но везде внешняя прога работает сама по себе, например сендмайл посылает письмо, а мне например надо запустить скрипт подсчета свободного места на диске и получить это значение в прогу.
Куда копать?
>Необходимо запустить из проги на С++ внешнюю программу, например перловый скрипт. И
>получить результат работы скрипта в переменную в программе. Как запустить скрипт
>вопроса нет, это достаточно много где хорошо описано, но везде внешняя
>прога работает сама по себе, например сендмайл посылает письмо, а мне
>например надо запустить скрипт подсчета свободного места на диске и получить
>это значение в прогу.
>Куда копать?Все просто, пишешь класс в который передаешь прогу и параметры запуска, а из него считываешь какой нибудь StringList,вывод этой проги и exit code. Затем
в этом классе пишешь метод run в котором, выполняешь создание pipe и затем fork
в дочернем процессе настраиваешь stdin, stdout на пайповые каналы и выполняешь exec нужной тебе команды. В родителе, метод run складываешь строки в лист и ждешь окончания child процесса. все.Похожий метод смотри Теренс Чан Системное программирование на спп для Юникс 253стр.
все уже сделано до нас
man popen =)
>все уже сделано до нас
>man popen =)
О! Спасибо, что-то подобное я и хотел услышать. А то управлять "вручную" пайпами мне показалась как-то громоздко ;-)
> а мне например надо запустить скрипт подсчета свободного места на диске
> и получить это значение в прогу.>Куда копать?
man 2 statfs, fstatfs - get file system statistics
>> а мне например надо запустить скрипт подсчета свободного места на диске
>> и получить это значение в прогу.
>
>>Куда копать?
>
>man 2 statfs, fstatfs - get file system statistics
Хм, свободное место на диске это только для примера. Мне надо универсальную процедуру получения значения из скрипта.
Впрочем путь мне уже указали ;-)