2010-05-08 5 views
3

제 컴파일러 클래스에 컴파일러를 구현하고 있는데 Qt & C++을 사용하고 있습니다.QProcess가 입력을 읽을 때를 어떻게 알 수 있습니까?

소스 코드에서 기계어 코드를 생성 한 후에 코드를 실행할 가상 컴퓨터를 실행하고 있습니다.

여기서 제가 직면 한 문제는 가상 머신에서 출력을 얻기 위해 readyRead() 신호를 사용하고 있지만 가상 머신이 사용자의 데이터를 읽으 려한다는 것을 어떻게 알 수 있습니까?

기계가 입력을 요청할 때마다 사용자에게 입력 대화 상자를 보여주고 싶습니다.

답변

1

실제로 입력 스트림은 실제 사용자 입력이 될 필요가없는 방식으로 설계되었습니다. 예를 들어 파일을 응용 프로그램의 입력으로 리디렉션하는 경우 입력의 다음 부분을 요구할 사람이 없습니다. 이 경우 std :: cin >>을 호출하면 응용 프로그램이나 운영 체제에서 생성 된 신호가없고 QProcess는 하위 응용 프로그램이 입력을 기다리는 것을 알 수있는 방법이 없습니다.

제 제안은 익명 파이프와 같은 간단한 IPC 중 일부를 사용하여 부모 프로세스에 그러한 이벤트를 알리는 것입니다. 가능한 경우 하위 프로세스 표준 출력에서 ​​특정 알림을 사용하여 이러한 알림을 보낼 수 있습니다.

실행중인 가상 머신이 타사 응용 프로그램 인 경우 사용자에게 일부 입력이 필요하다는 것을 알려주는 결과를 파싱하는 것이 유일한 옵션입니다.

관련 문제