如何將 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從該文件重定向標準輸入

相關內容