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