![애플리케이션이나 별도의 프로그램을 통해 셸과 상호 작용할 수 있는 방법이 있습니까?](https://linux55.com/image/183758/%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%9D%B4%EB%82%98%20%EB%B3%84%EB%8F%84%EC%9D%98%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%84%20%ED%86%B5%ED%95%B4%20%EC%85%B8%EA%B3%BC%20%EC%83%81%ED%98%B8%20%EC%9E%91%EC%9A%A9%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
셸에서 출력을 받은 다음 출력을 반환하는 방법을 찾으려고 하는데 다른 프런트 엔드 인터페이스에서요? Linux 터미널을 잠재적인 애플리케이션에 통합하려고 합니다.
답변1
제어 애플리케이션은 두 개의 파이프를 열고 Pipe()를 두 번 사용해야 합니다. 그런 다음 하위 프로세스를 분기합니다.
원래 코드에 있는 동안 부모는 한 파이프의 쓰기 끝과 다른 파이프의 읽기 끝을 닫습니다.
동시에 하위 프로세스는 이러한 파이프의 반대쪽 끝을 닫고 dup2()를 사용하여 이를 스트림 0과 1에 다시 할당합니다. 그러면 부모 프로세스가 자식의 stdin에 쓸 파이프와 자식의 stdout에서 읽을 파이프가 남습니다.
마지막으로, subexec는 필요한 매개변수를 포함하는 원하는 쉘입니다.
답변2
expect
도구입니다. 읽다man expect
https://linux.die.net/man/1/expect