C++ ------> g++ -------> bash :
#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
从该文件重定向标准输入