簡體   English   中英

在C ++中執行和接收mml命令的輸出

[英]execute and receive the output of mml command in c++

我有一個接口,可用於在我的solaris Unix中執行mml命令,如下所示:

> eaw 0004
<RLTYP; 
BSC SYSTEM TYPE DATA

GSYSTYPE
GSM1800

END
<

當我在命令行上看到eaw <name>時,它將啟動一個界面,在該界面中我可以執行mml命令,並且可以看到執行的命令的輸出。

我的想法是解析c ++中的命令輸出。 我可以取消一些解析邏輯。但是從如何開始在C ++中執行命令開始呢? 是否有任何預定義的方法來執行此操作。 這應該類似於在c ++中執行sql查詢,但是我們使用其他庫來執行sql查詢。我也不想運行shell腳本或在兩者之間創建臨時文件。

我想要的是在c ++中執行命令並獲得輸出,甚至在c ++中也是如此。 有人可以給我正確的方向嗎?

您有幾種選擇。 從最簡單,最簡單到最困難,最復雜的使用:

  • 使用system()調用生成外殼程序以運行命令
  • 使用popen()調用可生成子流程,然后寫入其標准輸入流或從其標准輸出流中讀取(但不能同時讀取兩者)
  • 使用pipe()fork()dup() / dup2()exec*()來生成子進程並為子進程的標准輸入和輸出設置管道。

以下代碼是使用sh命令完成的。 這會將stdout重定向到名為“ out”的文件,以后可以讀取該文件以處理輸出。 可以通過管道將對流程的每個命令寫入。

#include <stdio.h>
int main()
{
        FILE *fp;
        fp = popen("sh > out", "w");
        if (fp) {
                fprintf(fp, "date\n");
                fprintf(fp, "exit\n");
                fclose(fp);
        }
        return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM