Захват вызова оболочки из программы Python

0

Я работаю над модификацией C++ "CuraEngine", которая представляет собой программу командной строки, которая вызывается python gui "Cura". Cura выводит сложную строку с множеством параметров в CuraEngine, и мне нужно выяснить, что именно это.

Есть ли способ захватить всю строку оболочки CuraEngine, которую вызывает Cura?

ОС: Linux (Ubuntu 12.04 x64)
Cura - Python
CuraEngine - C++

Теги:

2 ответа

1
Лучший ответ
  1. переименуйте CuraEngine в CuraEngine.bin
  2. создайте сценарий оболочки CuraEngine который сохранит его аргументы (переменная оболочки "$@"), вызовет ./CuraEngine.bin "$@" и, возможно, захватит его вывод через программу перенаправления потоков или программу tee.
  • 0
    Гораздо приятнее, чем моя идея.
  • 0
    Я попробовал это с tee и с exec redirect, и он работает, когда я вызываю скрипт в командной строке, но не когда его вызывает графический интерфейс Cura ... exec>> (tee /home/uminded/Downloads/logfile.txt)
Показать ещё 1 комментарий
0

Поскольку это python, вы можете, возможно, декомпилировать его с помощью любого из декомпиляторов python, вставьте строку, которая регистрирует выполненные команды в выбранном вами файле, а затем замените.pyc на ваш новый.py. Я думаю, что все может работать как обычно, но вы получаете точные команды.

  • 0
    Я никогда не занимался программированием на Python, я полагаю, что могу просто найти двоичный файл CuraEngine в сценарии и вывести все команды, которые он использовал, в оболочку. Это программа, через которую вы можете запустить приложение, и оно будет выплевывать внешние вызовы? У меня было что-то подобное на окнах в те времена ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню