1. 程式人生 > >通過popen函式來執行ping 命令,並且解析出傳送的包,接收的包個數

通過popen函式來執行ping 命令,並且解析出傳送的包,接收的包個數

基礎知識:

1.利用popen的管道來執行shell指令ping 127.0.0.1 -c 4.表示我ping 基本4個包。

2.函式strstr可以得到需要字串在原來字串中的首地址

printf("%s transmitted %s rec\n", n_tranas, n_receive);

3.函式sscanf()可以獲得字串中的變數。format中[^=]表示字串以=結束且不包含=。%*表示跳過響應的字串

上程式碼:

#include <stdio.h> #include <string.h>
intmain() { FILE *fp; char line[
256]; char* p; char n_tranas[3]; char n_receive[3];
fp =popen("ping 127.0.0.1 -c 4", "r"); if (fp ==NULL) { printf("error!\n"); return-1; } while(!feof(fp)) { if (fgets(line, 256, fp) !=NULL) { // printf("p:%s\n", line); if ((p =strstr(line, "packets")) !=NULL) { sscanf(line, "%[^ ] %*s %*s %[^ ]", n_tranas,n_receive);
} } } printf("%s transmitted %s rec\n", n_tranas, n_receive); pclose(fp);
#if0 char *str = "Total Mem:1800 FreeMem:800 swapMem:500"; char *p = strstr(str, "FreeMem"); int freeMem; sscanf(p + strlen("FreeMem:"), "%d", &freeMem); printf("feeMem=%d\n",freeMem); #endif

return0;
}

結果:

[email protected]

:~/workdir/proj/mqsend$ ./a.out
4 transmitted 4 rec

相關推薦

通過popen函式執行ping 命令並且解析傳送接收個數

基礎知識: 1.利用popen的管道來執行shell指令ping 127.0.0.1 -c 4.表示我ping 基本4個包。 2.函式strstr可以得到需要字串在原來字串中的首地址 printf("%s transmitted %s rec\n", n_tranas

如何讓PHP通過ROOT許可權執行LINUX命令

一般 PHP 在 LINUX 伺服器上執行 shell 命令時,只能擁有 www:www 賬戶許可權,想執行一些系統命令是沒有許可權的,如重啟 apache,因為控制 apache 需要 root 許可權,因此下面的辦法可以讓 PHP 執行 ROOT 許可權的命令。 1

通過建構函式建立類的例項 - Unsafe的使用

我們知道,當使用反射構造類的例項時,我們常會用到xxx.class.newInstance()這個方法。但是這個方法有一個限制,就是要求類必須有預設的建構函式。但我們在做框架的時候,很難保證要動態構造的類例項,都是有預設建構函式的,那怎麼辦呢?   其實用過C++或者Delphi的

一 個批處理同時開啟多個CMD視窗執行 PING 命令

最近遇到經常性的突發性斷電,但是又沒有UPS ,所以伺服器關了又自己自動開起來,真的好煩。 又不想時時的跑機房看機器有沒有開動起來,突然想到,如果我在WINDOWS裡開多個CMD視窗,PING伺服器,如果正常,就是開起來了,如果不正常,那就要跑機房按電源了。 因沒有好好的學習,批處理懂得不多,所

已退出,程式碼為 5。請驗證您是否有足夠的許可權執行命令

Warning 1 warning MSB3075: The command "regsvr32 /s "D:\Debug\CBho.dll"" exited with code 5. Please verify that you have sufficient righ

【 Vivado 】在工程模式下通過jou檔案學習 Tcl 命令

Xilinx 的資料手冊UG895提供了一些系統級設計的方法,寫得很詳細,詳細到得不到重要的訊息(我菜)。 Tcl命令在工程模式下以及非工程模式下有一些差異,具體什麼差異,這裡暫時不說,後面我想應該會有一篇博文專門講解。(我懂了的話會有,我相信會有。) 這裡尋求一種方法來學習Vivado

CentOS執行ping命令報錯 name or service not know

在虛擬機器上安裝的CentOS,但是當執行ping命令的時候,提示name or service not known 解決方法如下: 1. 新增DNS伺服器 vi /etc/resolv.conf 在檔案中新增如下兩行(可以自己選擇DNS

python基礎之使用os.system執行系統命令

PS:dir(sys)可獲取sys所有介面 第二種方法是在linux命令列下鍵入:python,然後就會進入python,並顯示相關資訊,結果如圖: 看到了吧,上面顯示了:python版本:2.7.2 作業系統版本:red hat 4.1.2 當然你也可以在這裡面鍵入上述命令,如圖: 原文連結:   h

linux機器上執行ping命令的java方法

在編寫網管系統的過程中,經常需要判斷某臺機器是否可用,於是採用使用ping機器的方法判斷該機器當前是否可用,方法如下: /** * @Title: execPingCommand * @Description: 執行ping命令,檢視裝置是否可用 * @param @param deviceIp

如何以hdfs的使用者執行hadoop命令

當hadoop叢集中加上許可權管理後,即使是linux的root使用者也不能擁有最高許可權了,因為hdfs的管理員是hdfs,那麼問題來了,怎麼在命令列呼叫hdfs的命令呢? 開啟檢查 HDFS 許可權 dfs.permissions 設定為true 建立目錄 su

為什麼執行ping命令時不需要root許可權? 怎樣讓程序具有root許可權?

     最近遇到一個問題, 需要讓普通使用者執行程式時具有root許可權, 怎麼辦呢?     我們來看看ping, 它採用了raw socket, 需要root許可權, 但是, 我們平常執行root命令的時候, 沒有加sudo啊, 來探個究竟:ubuntu@VM-0-15

在eclipse執行maven命令時報在jre裡找不到jar

  在eclipse裡執行maven命令時報錯: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project

在軟raid10上使用LVM並且進行磁盤配額最後還原。

bsp auto san resize2fs setquota uid create gdi 效果 實驗環境 1)centos 7.3 2)lvm格式化的文件系統為ext4 3)磁盤為單一磁盤的不同分區 4)使用軟件:mdadm,lvm2 tools,quota 軟

在不改變元素的顯示屬性的情況下元素都是可以設置寬度的並且能夠設置成功這句話是否正確?

NPU for 不可 inpu 都是 css 類型 line cit 在CSS中,html中的標簽元素大體被分為三種不同的類型: 塊狀元素、內聯元素(又叫行內元素)和內聯塊狀元素。 常用的塊狀元素有: <div>、<p>、<

hexo的next主題部落格中加入分類頁面的js實現多級目錄並且能夠點選展開隱藏下級目錄~(不知道算不算深度優化~~~)

多級標題 在自己的xxxx.md檔案中做如下修改: categories: - 搗蛋鬼 - mac 新建catogery_js.js(名字無所謂) 加入自己的js 我這裡是下面這樣的 function category_js () { $("&

移動端將base64傳給後臺後臺解析的圖片一部分是白色的

1、base64在手機端如果儲存到input的value裡面   input會截斷太大的部分 導致後臺收到的base64無法正確解析或者一部分是白色的   可以放到全域性變數或者imgsrc屬性裡  2、部

JS將引數新增到URL並且解析URL獲取引數值

拿一個多選框來做一個例子吧!! <span style = "position: relative;left: 3%;top:30px; font-size: 20px">障及問題申報:</span> <input id="gu

thinkphp 查表返回的陣列js解析有UNICode編碼解決辦法

public function getDeviceMsg(){ $allDevicesMsg = M("newdevicesstatus")->getField("status",true); $allDevicesMsg2 = array(); /

java工程打包成jar並且解壓lib裡的jar

    在我們開發完java工程部署時,有時不需要web容器,為了方便部署有時候需要打成jar包。     這裡介紹2種Eclipse打jar包的方式, 方式一、工程引用的jar包打在lib目錄下

用遞迴的方法把一個無符號整數的每一位數字單獨寫出來並且計算每一位加起來的和。

這個題的具體含義是什麼呢? 例如: 給出一個無符號整數:1234     一千兩百三十四; 然後變成:1   2   3   4; 再把它們加起來:10; 所以很簡單的一道題,但是我們要用遞迴的思想寫