используйте python для имитации отправки пользовательского ввода в spim

Я пытаюсь написать программу на python, которая может запускать SPIM и отправлять пользовательский ввод в подпрограмму SPIM.

я пытался использовать

mips=subprocess("spim",stdin=PIPE, stdout=output.txt, stderr=output.txt)
mips.stdin.write(b"10")
mips.stdin.write(b"15")
mips.stdin.write(b"15")

но он полностью пропустил ожидание ввода пользователя

Вот что должна делать подпрограмма mips

enter first value: 10
enter second value: 15
enter third value: 15
your Sum is: 40

это работает правильно, когда я вызываю его с терминала и сам ввожу значения, но если я запускаю его как подпроцесс, он печатает следующее

enter first value: 
enter second value: 
enter third value: 
your Sum is: 101515

101515, кажется, печатает после завершения выполнения spim

что я могу сделать, чтобы программно ввести значения в виртуальную машину spim

Если это поможет, SPIM - это pts, а не tty


person kami    schedule 04.06.2020    source источник


Ответы (1)


Чтобы программно отправить ввод для вращения, вы помещаете значения в текстовый файл и передаете в

Каждое значение в новой строке

Итак, если подсказки mips были

Введите строку

Введите цифру

Текстовый файл должен выглядеть следующим образом с каждым отдельным вводом в отдельной строке.

Мой ввод строки

127

И в терминале вы вводите следующее

spim asm-name.s ‹ input-file.txt

person kami    schedule 30.08.2020
comment
Вам не нужно использовать входной файл. В этом вся суть труб. - person Peter Wood; 30.08.2020