Обёртка для запуска .exe и вывода stdout/stderr
Нужно написать прорамму на Си, которая:
* запускает другую программу,
* ждёт её завершения,
* если в 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".
* Надо не забыть передать аргументы командной строки.
* Код возврата -- как у завершившейся программы.