Обёртка для запуска .exe и вывода stdout/stderr

Олег19 років у сервісі
Дані замовника будуть вам доступні після подання заявки
03.06.2013

Нужно написать прорамму на Си, которая:

* запускает другую программу,

* ждёт её завершения,

* если в stderr/stdout что-то есть, сообщает пользователю от этом.

На Python это выглядит примерно так:

:: import sys, subprocess, wx

:: cmd = ' '.join(sys.argv[1:])

:: p = subprocess.Popen(cmd, stderr=subprocess.STDOUT,

:: stdout=subprocess.PIPE)

:: s = p.stdout.read()

:: if not s:

:: sys.exit(p.returncode)

:: app = wx.App()

:: wx.MessageBox(parent=None, caption="Unexpected output",

:: message="Unexpected output from the program:\n"+s,

:: style=wx.OK|wx.ICON_INFORMATION)

:: sys.exit(p.returncode)

(На всякий случай: в этом примере грубая ошибка. Если в stdout/stderr попало больше текста, чем системный буфер, то программа блокируется. Поэтому Вам надо не просто перевести код на Си, но и переписать его правильно.)

Технические требования:

* Поддержка Windows 2000 и выше.

* Компилятор: gcc или Visual C Express.

* Малый размер экзешника.

* Файл проекта должен содержать также иконки (нарисуйте-найдите без разницы что) и всё, что ожидается от типичной windows-программы.

* Какую программу запускать: путь берётся из ресурсов. Если не задан, использовать "program\program.exe".

* Надо не забыть передать аргументы командной строки.

* Код возврата -- как у завершившейся программы.

Заявки фрілансерів