cat 출력을 표준 입력으로 파이프하는 방법은 무엇입니까? [폐쇄]

cat 출력을 표준 입력으로 파이프하는 방법은 무엇입니까? [폐쇄]

C++ ------> g++ -------> 배시:

#include <cstdlib>

using namespace std;

int main(){

    system("mail -s test_mail [email protected]");
    system("test msg");
    system(".");

    return 0;
 }

첫 번째 시스템 명령은 잘 실행되지만 표준 입력 대신 다른 입력 스트림에서 입력을 받는 것처럼 작동합니다. system("test msg")는 메일 프로그램을 종료하기 위해 cntl+c를 누른 후에만 실행되고 bash는 "test msg"를 해석하려고 시도합니다.

답변1

system()실제로 명령줄을 실행하면 됩니다. 파이프 같은 것이 아닙니다.

예제 프로그램이 작동하도록 하기 위해 가능한 가장 작은 변경은 다음과 같습니다.

int main()
{
    system("echo test msg | mail -s test_mail [email protected]");
    return 0;
}

그러면 메시지가 mail프로그램의 표준 입력으로 전달되기 때문입니다.

보다 실용적인 접근 방식은 메시지를 임시 파일에 쓴 다음 mail해당 파일에서 표준 입력을 리디렉션하는 것입니다.

관련 정보