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
해당 파일에서 표준 입력을 리디렉션하는 것입니다.