"в мире C, функция может возвращать код ошибки для представления статуса выхода и использовать параметр INOUT / OUT, чтобы получить реальный результат процесса"
Считать статус выхода взломанным. Это не C-ism, это Linux-ism. Функции C возвращают ровно одно значение. C не имеет исключений, поэтому есть несколько способов указать на неудачу, все довольно плохо.
Требуется обработка исключений. У Python и Java это есть, и им не нужен статус выхода.
Однако ОС по-прежнему зависят от состояния выхода, поскольку сценарии оболочки по-прежнему очень примитивны, и некоторые языки (например, C) не могут выдавать исключения.
Считать входные / выходные переменные также хаком Это ужасный взлом, потому что функция имеет несколько побочных эффектов в дополнение к возвращению значения.
Обе эти "особенности" не являются действительно лучшими шаблонами проектирования для подражания.
В идеале, функция является «идемпотентной» - независимо от того, сколько раз вы ее вызываете, вы получаете одинаковые результаты. Переменные In / Out нарушают идемпотентность непонятными, трудными для отладки способами.
Вам не нужны ни одна из этих функций, поэтому вы не видите много лучших практик для их реализации.
Лучше всего возвращать значение или вызывать исключение. Если вам нужно вернуть несколько значений, вы вернете кортеж. Если что-то не работает, вы не возвращаете статус выхода, вы вызываете исключение.
Обновление. Поскольку удаленный процесс - это в основном RSH для запуска удаленной команды, вы должны делать то, что делает remctl
.
Вам нужно подражать: http://linux.die.net/man/1/remctl точно. Вы должны написать клиент и сервер Python. Сервер возвращает сообщение с кодом состояния (и любой другой сводкой, например, во время выполнения). Клиент выходит с тем же кодом состояния.