2020年11月23日 星期一

【 linux】用c取得指令結果的方法

寫程式有時候會call library來使用,有時偷懶直接想透過指令取得結果,可以用下面兩種方法取得平常在終端機裡看到的返迴值,拿到程式裡使用。這邊是在linux的環境下執行。


第一種透過system call,這種麻煩是要處理檔名不重複問題。

system("ping 192.168.1.105 >/root/1.txt");

到root下找1.txt文件打開,當然root可以換成任一路徑,然後一樣可以用fopen處理。


第二種透過popen,這種沒有處理檔名不重複的問題。

FILE *fp;

    char *cmd = "ping -c 1 219.246.237.124";

    char buf[128];

    printf("enter\n");

    if ((fp = popen( cmd , "r"))==NULL )

    {

        printf("failed to popen\n ");

        return;

    }

    printf("gemfield\n");

    /*讀出管道數據*/

    fgets(buf,sizeof(buf), sizeof(buf), fp);

    printf ( "%s\n", buf);//buffer裡的東西看你愛怎麼用就怎麼用~

    printf("haha\n");

    /*關閉管道*/

    pclose (fp) ;

沒有留言:

張貼留言