2016-11-08 2 views
0

나는 이것을 어떻게 표현할 지 모르겠습니다. 하지만 유닉스에서 또 다른 C 프로그램을 호출 할 C 프로그램이 있습니다. 호출 후, 프로그램 (foo-exe)은 "Y/N"입력을 요구합니다. 나는이 프롬프트 메시지를 숨기고 (숨기고) 그 후에 'Y'를 입력으로하고 싶습니다. 어떻게해야합니까? 그 모든 (Y 또는 N을)의 경우프롬프트를 억제하고 입력을 공급하는 방법

#include <stdio.h> 
int main(int argc, char* argv[]) 
{ 
    system("/home/xyz/foo-exe bar"); 
} 

foo는-EXE

// do some other stuff 
char ans = 'n'; 
printf("prompt message. Yes or no? (Y/N) "); 
ans=getchar(); 
if(ans == 'Y') system("foo"); 

답변

1

foo-exe 그런 다음 파이프에서 읽을 표준 입력을 리디렉션 할 수 것으로 기대하고있다.

system("echo Y | /home/xyz/foo-exe bar"); 

그러나 것은 system()pitfalls을 인식하고 그것의 사용은 일반적으로 권장되지 않습니다.

+0

이것은 작동하지 않았습니다. 중요한지 모르지만 foo-exe는 즉시 입력을 요구하지 않습니다. 그 전에는 다른 일을합니다. 입력을 묻는 메시지의 내용을 반영하여 내 질문을 업데이트했습니다. –

+0

'foo-exe'가 다른 일을하는 것이 중요하지 않습니다. 그러나'foo-exe'가 다중 입력을 기대한다면 문제가 발생합니다. 명령 행에서'foo-exe'를 실행하여이를 검사 할 수 있습니다. –

+0

'/ home/xyz/foo-exe bar'를 터미널에서 직접 실행하는 것이 좋습니다. 'Y/N'을 요구하는 지점에 도달합니다. –

관련 문제