Есть ли возможность получить данные с датчика в виджет?

Все механизмы, которые Python выполняет для выполнения дочернего процесса, требуют имени файла.

И поэтому базовая функция CreateProcess в Win32 API, поэтому нет даже простой способ обойти его, спустившись на этот уровень.

Там есть способ сделать это, отбросив до ZwCreateProcess / NtCreateProcess . Если вы знаете, как использовать низкоуровневый API NT, этот пост должен быть всем, что вам нужно, чтобы понять его. Если вы этого не сделаете, это слишком сложно объяснить в ответ SO.

В качестве альтернативы, конечно, вы можете создавать или использовать RAM-диск или даже имитировать виртуальную файловую систему, но это немного глупым, как попытка избежать создания файла.

Итак, правильный ответ - записать exe в файл, а затем выполнить его. Например, что-то вроде этого:

fd, path = tempfile.mkstemp(suffix='.exe')
code = base64.b64decode(encoded_code)
os.write(fd, code)
os.fchmod(fd, 0o711)
os.close(fd)
try:
    result = subprocess.call(path)
finally:
    os.remove(path)

Это должно работать как на Windows, так и на * nix, но оно полностью не тестировалось и, вероятно, будет иметь ошибки, по крайней мере, на одной платформе.

Очевидно, что если вы хотите выполнить его несколько раз, не делайте remove до тех пор, пока вы не закончите с ним. Или просто используйте некоторый подходящий постоянный каталог и напишите его, только если он отсутствует или устарел.

0
задан Fatima Ourbate 7 March 2019 в 00:13
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: