У Вас есть он, это - все. Но так, в основном, какой смысл объединений?
можно вставить то же содержание местоположения различных типов. Вы имеете к , знают тип того, что Вы сохранили в объединении (так часто, Вы помещаете его в struct
с тегом типа...).
, Почему это важно? Едва ли для усилений пространства. Да, можно получить некоторые биты или сделать некоторое дополнение, но это больше не основной момент.
Это для безопасности типов, это позволяет Вам сделать некоторый 'динамический контроль типов': компилятор знает, что Ваше содержание может иметь различные значения и точное значение как Ваш интерпретировать Вам решать во времени выполнения. Если у Вас есть указатель, который может указать на различные типы, НЕОБХОДИМО использовать объединение, иначе Вы кодируете, может быть неправильным из-за искажения проблем (в компиляторе говорится себе, "о, только этот указатель может указать на этот тип, таким образом, я могу оптимизировать те доступы...", и плохие вещи могут произойти).
есть некоторые синтаксические ошибки ...
оригинал:
cmd=["ssh", sshConnect, "cd %s;"%(workDir), Fortrancmd %s jobname "%s -o %s" exeFilename "%s && %s ./ %s%s"%(exeFilename)]
Я думаю, вы имеете в виду:
cmd = [
"ssh",
sshConnect,
"cd %s;" % (workDir,),
"%s %s -o %s && ./%s" % (Fortrancmd, jobname, exeFilename, exeFilename)
]
Несколько примечаний:
PS - Для удобства чтения часто рекомендуется разбивать длинные списки на несколько строк :)
Я бы рекомендовал посмотреть этот поток stackoverflow для ssh вместо использования подпроцесса
Информацию о руководстве вы можете найти в pexpect или в windows wexpect . Это позволяет вам выполнять подпроцессы и передавать ввод в интерактивных условиях.
Однако большая часть того, что вы делаете, похоже, хорошо работает в сценарии оболочки. Для простоты вы можете создать сценарий оболочки на стороне сервера для операций на стороне сервера, а затем указать путь в операторе ssh:
ssh user@host "/path/to/script.sh"
одна ошибка:
у вас в списке аргументов есть% s без кавычек, поэтому форматирование строки не сработает.
нужно ли использовать python?
ssh user @ host "command"
Вот полный пример использования модуля подпроцесса для запуска удаленной команды через ssh (в данном случае простое эхо) и получения результатов, надеюсь, это поможет:
>>> import subprocess
>>> proc = subprocess.Popen(("ssh", "remoteuser@host", "echo", "1"), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> stdout, stderr = proc.communicate()
Что в данном случае case возвращает: ('1 \ n', '')
Обратите внимание, что для того, чтобы это работало без запроса пароля, вам, вероятно, придется добавить открытый ключ локального пользователя в ~ remoteuser / .ssh / authorized_keys на удаленной машине .