STDIN_FILENO write 관련
글쓴이: asleea / 작성시간: 일, 2013/07/14 - 6:05오후
터미널 창에 입력을 한것 처럼 하게끔 프로그램을 작성하려고 합니다.
만약에 "3"이란 입력을 주어야 어떤 프로세스가 실행이 되도록 프로그램이 되어있다면, 사용자가 직접 입력을 주어도 되고, 특정 상태에 들어가면
자동으로 터미널창에 "3"을 입력해주어 그 프로세스가 실행되도록 말입니다.
처음 생각에는 단순하게 아래와 같이 작성을하면 될 것이라고 생각을 했는데.
//여기에서 입력을 주고 write(STDIN_FILENO, "3", 1); //read와 write는 다른 thread상의 작성된 부분입니다. //여기에서 입력을 읽어 "3"이 입력되었음을 확인하고 프로세스를 실행 하도록 한d다. char a; read(STDIN_FILENO, &a, 1); if(a == "3"){ }
그런데 제가 생각하는 대로 동작을 하지 않더군요.;;;;
어떻게 해야 될지 ....
Forums:
표준 입력에 값을 쓰면 나중에 그 값을 그대로 읽을
표준 입력에 값을 쓰면 나중에 그 값을 그대로 읽을 수 있을 거라고 생각하셨나요? 일견 그럴듯해 보일 수 있지만 그렇게 동작하지 않습니다.
이 문제를 푸는 정석적인 방법은 파이프(pipe)를 만들고, 파이프의 읽는 쪽(read end)으로 표준 입력을 덮어씌우는 것입니다.
http://man7.org/linux/man-pages/man2/pipe.2.html
https://tribal1012.tistory.com/70
댓글 달기