1. 程式人生 > >使用popen()執行shell命令並獲取內容

使用popen()執行shell命令並獲取內容



1.popen通過管道獲取shell的輸出結果,跟重定向(ls > /test.txt)類似。

[email protected]:~# cat /proc/uptime
67.23 19.08

char*get_uptime()
{
  float hours;
  FILE *fp;
  static char buf[16];
  fp = popen("cat /proc/uptime |cut -d \" \" -f1","r");
  fgets(buf,sizeof(buf),fp);
  pclose(fp);
  hours = (atof(buf))/3600.00;
  sprintf(buf,"Uptime:%7.2f H",hours);
  return buf;
}
char*get_date()
{
   FILE *fp;
   static char buf[16];
   //fp = popen("date '+%y/%m/%d %I:%M%p'","r");
   fp = popen("date '+%m/%d %I:%M %a'","r");
   fgets(buf,sizeof(buf),fp);
   pclose(fp);
   return buf;
}

char*get_ip()
{
   FILE *fp;
   char tmp[16];
   static char buf[16];
   fp = popen("ifconfig ppp0|grep \"inet addr\"|cut -d \":\" -f2|cut -d \" \" -f1","r");
   fgets(tmp,sizeof(buf),fp);
   pclose(fp);
   sprintf(buf,"%16s",tmp);
   return buf;
}


char*get_rx()
{
float f,s,rx;
FILE *fp;
static char buf[16]="                ";
fp = popen("cat /proc/net/dev|grep \"ppp0\"|cut -d \" \" -f4","r");
fgets(buf,sizeof(buf),fp);
pclose(fp);
f=atof(buf);

sleep(1);

fp = popen("cat /proc/net/dev|grep \"ppp0\"|cut -d \" \" -f4","r");
fgets(buf,sizeof(buf),fp);
pclose(fp);
s=atof(buf);

rx = ((s-f)/1024.00);
sprintf(buf," RX:%7.2f KB/s",rx);
return buf;
}


char*get_tx()
{
float f,s,tx;
FILE *fp;
static char buf[16]="                ";
fp = popen("cat /proc/net/dev|grep \"ppp0\"|cut -d \" \" -f42","r");
fgets(buf,sizeof(buf),fp);
pclose(fp);
f=atof(buf);

sleep(1);

fp = popen("cat /proc/net/dev|grep \"ppp0\"|cut -d \" \" -f42","r");
fgets(buf,sizeof(buf),fp);
pclose(fp);
s=atof(buf);

tx = ((s-f)/1024.00);
sprintf(buf," TX:%7.2f KB/s",tx);
return buf;
}


相關推薦

使用popen()執行shell命令獲取內容

 1.popen通過管道獲取shell的輸出結果,跟重定向(ls > /test.txt)類似。 [email protected]:~# cat /proc/uptime 67.23 19.08 char*get_uptime() { float

Linux C 程式執行 shell 命令獲取返回結果的方法

據說有統計資料表明,程式碼的缺陷率是一定的,與所使用的語言無關。Linux提供了很多的實用工具和指令碼,在程式中呼叫工具和指令碼,無疑可以簡化程式,從而降低程式碼的缺陷數目。Linux shell 指令碼也是一個強大的工具,我們可以根據需要編制指

java呼叫shell命令獲取執行結果

原文地址:http://blog.csdn.net/arkblue/article/details/7897396 使用到Process和Runtime兩個類,返回值通過Process類的getInputStream()方法獲取 package ark;

java執行cmd命令獲取輸出結果

cat result ring stream jarsigner blog gin org common 1.java執行cmd命令並獲取輸出結果 1 import java.io.BufferedReader; 2 import java.io.InputStrea

java實現 連線遠端伺服器 執行Linux命令 獲取 執行返回的結果

情景:要通過java連線伺服器,並執行指令碼命令 得到 返回的結果 package com.ideal.openapi.util; import com.jcraft.jsch.*; import org.slf4j.Logger; import org.slf4j.LoggerFacto

python 執行shell命令將結果儲存

方法1: 將shell執行的結果儲存到字串 def run_cmd(cmd):     result_str=''     process = subprocess.Popen(cmd, shell=True,               stdout=subprocess

Python實現ssh登入執行shell命令將結果寫入mysql資料庫

#coding=utf-8 import MySQLdb import paramiko import datetime import time #timestamptimestamp = time.mktime(datetime.datetime.now().timetu

perl呼叫shell命令獲取輸出

1 systemperl也可以用system呼叫shell的命令,它和awk的system一樣,返回值也是它呼叫的命令的退出狀態.如果向system傳遞一個字串作引數,則perl會呼叫shell來執行這個命令,在這個字串內也就不可以有perl的變量了;如果傳遞多個字串作引數,則perl會自己執行這個命令,且可

Linux下使用popen()執行shell命令

函式定義 #include <stdio.h> FILE * popen(constchar *command , constchar *type ); int pclose(FILE *stream); 函式說明 popen()函式通過建立一個管道,呼叫fork()產生一個子程序,執行一

【c/c++】如何呼叫【linux】shell命令命令獲取命令列的輸出內容

#include <stdio.h> #include <string.h> void executeCMD(const char *cmd, char *result) { char buf_ps[1024]; char ps[

執行shell命令的函數——system()、popen()

system、popen1、FILE* popen(const char* cmd,const char* type); int pclose(FILE* stream); popen()函數fork()一個子進程,創建管道用於父子進程間通信,父進程要麽從管道讀,要麽往管道寫,執行一個shell以

Android 執行命令獲取命令pid

執行命令如下:                 try {             &

python 執行shell命令的幾種方法(os.system、os.popen、subprocess、commands)

1、os.system 該函式返回命令執行結果的返回值,並不是返回命令的執行輸出, system()函式在執行過程中進行了以下三步操作: 1.fork一個子程序; 2.在子程序中呼叫exec函式去執行命令; 3.在父程序中呼叫wait(阻塞)去等待子程序結

通過shell執行kubectl exec在對應pod容器內執行shell命令

問題描述: 由於服務部署在K8S環境下,在應用層之上有一次cache層,使用的是nginx的快取,這樣每次更新後臺服務資源後,cache內的快取並未及時更新,這時需要人工清除cache,其實只要使用yaml檔案拉取nginx映象重新部署就可以了,但K8s對於映象tag未變化

linux使用popen讀取shell命令執行結果

popen函式詳解 描述 popen() 函式 用 建立管道 的 方式 啟動 一個 程序, 並呼叫 shell. 因為 管道 是被定義成 單向的, 所以 type 引數 只能 定義成 只讀 或者 只寫, 不能是 兩者同時, 結果流 也相應的 是 只讀 或者 只寫.

C語言執行Linux的shell命令獲得返回值

popen函式執行命令後,返回一個指向該命令輸出的檔案控制代碼,接下來就可以用fgets等檔案操作函式去讀取輸出結果。 [cpp] view plaincopyprint? #include <stdio.h> FILE *popen(cons

Centos 執行shell命令返回127錯誤

建數據庫 mysq data 存在 思路 功能 自動創建 運行 用戶 shell腳本功能:連接mysql,自動創建數據庫,腳本如下 mysql -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASSWORD --default-character-s

php 執行shell命令 打印錯誤信息

信息 資源 null function $cmd = "rm 1.txt";//刪除一個不存在的文件,查看報錯信息 $res = doShell($cmd); var_dump($res); //該函數沒有限制條件,可以直接放在代碼中使用 function doShell($cmd,$cwd=

python之執行shell命令

python[[email protected]/* */ ~]# python Python 2.7.5 (default, Sep 15 2016, 22:37:39) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2 Type "help",

windows linux 使用python執行系統命令將結果保存到變量

rtc 2008r2 digg 系統 ng- shc down post drive 最近需要用到os.system 發現不能賦值到變量 後查有更新的模塊,如下: os.system os.spawn* os.popen* popen2.* commands.* 重新使