Как порождать процесс Linux из приложения Windows? - PullRequest
5 голосов
/ 30 апреля 2009

В моем интерактивном 32-разрядном приложении Windows (которое теперь переходит от Delphi [Ent] 2007 к 2009) используются взаимодействия командной строки для порождения дочерних процессов, выполняющих задачи, требующие больших вычислительных ресурсов, которые, в свою очередь, пишут текстовые файлы, которые родительское приложение GUI анализирует и анализ - в результате интерактивного графического отображения результатов.

У меня есть доступ к многопроцессорному (многопользовательскому) кластеру Linux (через ssh), и я хотел бы перенести тяжелую работу на этот кластер. Мой вопрос - как порождать процессы в Linux из моего приложения для Windows. Я могу представить себе использование безопасного FTP для размещения и получения файлов, но не знаю, как порождать дочерние процессы в Linux.

Некоторые выводы для дальнейшего чтения были бы хороши - но код / ​​псевдокод был бы идеальным. Я могу предположить, что это может быть больше о взаимодействии Windows-Linux, чем Delphi.

Ответы [ 3 ]

6 голосов
/ 30 апреля 2009

если у вас есть доступ к ssh, одним из вариантов является выдача команд через него. Например:

ssh user@host ls -l ~

в терминале ssh покажет файлы в домашнем каталоге пользователя. Я не уверен, что это то, что вы действительно хотите. Но это, вероятно, сработает.

Если вы сделаете это, вы почти наверняка захотите настроить пароль SSH без логинов

Тем не менее, более идеальным решением, вероятно, будет установка демона на Linux-блоках, единственной задачей которого является запуск определенных долгосрочных задач в фоновом режиме и возможность получения результатов позже.

5 голосов
/ 30 апреля 2009

Я бы скачал полный пакет "замазка".

Помимо превосходного защищенного терминала оболочки, он включает PSCP для безопасной передачи файлов и PLINK для удаленного выполнения команд по SSH.

Подсказка: вам нужно настроить полную конфигурацию открытого / закрытого ключа, чтобы PLINK работал без раздражающего запроса пароля. Есть полезное руководство http://unixwiz.net/techtips/putty-openssh.html>here.

5 голосов
/ 30 апреля 2009

Вам нужно будет что-то установить на Linux-машину, чтобы запустить процесс. Вы можете найти какой-нибудь API-интерфейс кластеризации или пакетной передачи, который вы можете установить и получить к нему доступ из Windows. Возможно, вам придется кодировать пользовательский сервер. Возможно, вы сможете запустить все через ssh, если сможете управлять процессом ssh из Windows и если у вас установлен sshd на стороне Linux. Но я бы предпочел написать веб-сервис или простой CGI-скрипт на стороне Linux, предназначенный для получения ваших аргументов и данных и возврата результата через обычный старый http (или https в зависимости от ситуации).

Так или иначе, это будет охватывать больше, чем просто кодирование на стороне Windows.

...