Привет! Я хочу смоделировать ожидание программы Linux, когда программа запрашивает у меня, например, логин, я хочу отправить эти данные на консоль.
Когда мне нужно поместить данные в следующую строку, все работает, нокогда программа ожидает ввода в той же строке, где находится сообщение, я не могу прочитать это, программа зависла и ничего не могу сделать.
Могу ли я использовать subprocess.communicate () без текста для отправки в скобках или принять решение?когда и что следует отправлять?
Моя программа (работает только в том случае, если программа ожидает ввода в новой строке):
from subprocess import Popen, PIPE
from time import sleep
p = Popen(["java", "testing"],
stdin = PIPE, stdout = PIPE, stderr = PIPE, shell = True)
while True:
output = p.stdout.readline()
print output
if "Hello, give me data:" == output.strip():
p.stdin.write('Your data\n')
if "OUT" == output:
p.stdin.write('EXITmmand\n')
sleep(0.1)
if not output:
break
sleep(2)
Тестирование программы в Java [когда я удаляю ln
inSystem.out.println («Здравствуйте, дайте мне данные:»);это не работает]:
import java.util.Scanner;
public class testing{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
String string = "";
System.out.println("Hello, give me data:");
text = s.nextLine();
System.out.println(text);
System.out.println("Goodbye");
}
}