如何将 cat 输出通过管道传输到标准输入?

如何将 cat 输出通过管道传输到标准输入?

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从该文件重定向标准输入

相关内容