精华内容
下载资源
问答
  • Linux中用C++通过管道来获取命令行输出内容 转载请说明出处:http://blog.csdn.net/cywosp/article/details/8980898  使用C++时,有些时候我们可以通过管道的方法来获取所执行的命令所输出内容。具体做法如下...

    Linux中用C++通过管道来获取命令行输出的内容

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/8980898

        使用C++时,有些时候我们可以通过管道的方法来获取所执行的命令所输出的内容。具体做法如下:
        首先你需要确定你所执行的命令所输出的内容的格式(不同的操作系统相同的命令所输出来的内容格式可能会不一致)。我们来举例说明:我想获取/var目录当前所暂用的存储空间,以KB为单位输出:

        [root@localhost /]# du -sk /var
        13532132 var
        [root@localhost /]# du -sk /var | awk -F ' ' '{print $1}'
        13532132
        从上面输出可以知道/var目录当前暂用了13532132KB,那么我们如何将改值使用到我们的程序中呢?为了简单起见我实现了如下函数:

    int64_t CalculateDirUsedCapacity (const std::string& directoryName)
    {
        FILE *fstream = NULL;
        char buff[32];
        memset (buff ,'\0', sizeof(buff));
    
        std::string cmd = "du -sk " + directoryName;
        cmd += "| awk -F ' ' '{print $1}'";
    
        // 通过管道来回去系统命令返回的值
        if(NULL == (fstream = popen (cmd.c_str (), "r"))) {
            return 0;
        }
    
        if(NULL == fgets (buff, sizeof(buff), fstream))   
        {    
            pclose(fstream);  
            return 0;
        }
    
        std::strstream ss;
        ss << buff;
        int64_t usedCapacity = 0;
        ss >> usedCapacity;
        pclose(fstream);  // close pipe
    
        return usedCapacity;
    }

    展开全文
  • 本文介绍了在Linux系统中,使用C语言中的popen执行了一个终端命令后,将终端输出重定向到一个文件流中,再使用fgets获取到终端输出的每一行,并使用strstr提取其中的关键字符串,然后使用sscanf获取到字符串后面的...

    本文介绍了在Linux系统中,使用C语言中的popen执行了一个终端命令后,将终端输出重定向到一个文件流中,再使用fgets获取到终端输出的每一行,并使用strstr提取其中的关键字符串,然后使用sscanf获取到字符串后面的字符。由于fgets是指定的流中读取数据,本文也适用于从一个文件中获取指定字符串的使用场景。

     

    参考:https://blog.csdn.net/jakejohn/article/details/89310448

    下面以执行iwlist wlan0 scan命令获取扫描周围的WiFi ap的SSID以及signal level,由于命令执行后会输出很多无用的信息,所以本文使用popen将终端的输出重定向到一个文件流中,然后使用fgets函数一次获取文件流的每一行,并判断是否有自己关心的关键字符串。

    int get_wifi_essid_signal(void)
    {
    	FILE* fp;
    	char buf[100] = {0};
    	char command[300] = "iwlist wlan0 scan";
    	int ret = 0;
    	char str[100];
    	char signal_level[10] ;
    	char *q = NULL;
    	char *signal = NULL;
    
    	if((fp = popen(command, "r")) != NULL)
    	{
    		printf("popen command success\n");
    		while(fgets(buf, sizeof(buf), fp) != NULL)
    		{
    			q = strstr(buf, "ESSID:");
    			signal = strstr(buf, "Signal level=");
    			if (q != NULL)
    			{
    				sscanf(q, "ESSID:\"%[^\"]\"", str);//%[^\"]是指取到以分号结束为止。参考:https://baike.baidu.com/item/sscanf/10551550?fr=aladdin
    				q = NULL;
    				printf("ESSID:%s", str);
    			}
    
    			if(signal != NULL)
    			{
    				sscanf(signal, "Signal level=%[^/]", signal_level); //%[^/]是指取到以/号结束为止
    				signal = NULL;
    				printf("   signal level=%s\n", signal_level);
    			}
    		}
    		pclose(fp);
    	}
    	return ret;
    }
    

     

    展开全文
  • python中,运行Linux命令,运行正确获取运行结果,运行错误获取错误提示 subprocess模块—Popen command = "ping -c 1 baidu.com " back = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE,stderr=...

    python中,运行Linux命令,运行正确获取运行结果,运行错误获取错误提示

    subprocess模块—Popen

    command = "ping -c 1 baidu.com "
    back = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()
    print("back0----", back[0].decode())  # 注意需要进行解码操作,默认输出的是字节
    print("back1----", back[1].decode())  # back是一个元祖,可以通过元祖取值的方式获取结果
    

    执行结果:
    在这里插入图片描述
    如果将命令改成:

    command = "ping -c 1 bbaidu.com "
    

    结果如下:
    在这里插入图片描述
    也就是说,在使用 subprocess.Popen执行后,通过元祖取值的方式,我们可以获取到命令执行之后的结果
    本demo中,back[0]----stdout(输出结果),back[1]–stderr(错误捕获)

    展开全文
  • python执行linux命令并且获取输出

    千次阅读 2019-01-27 16:35:50
    res = subprocess.check_output('ls .', shell=True) >>> print(res) ... 默认输出是二进制的,所以我们需要decode一下, 编程字符串 res = subprocess.check_output('ls .', shell=True).decode('utf-8')
    
    res = subprocess.check_output('ls .', shell=True)
    >>> print(res)
    b'flowx-0062.jpeg\nflowx-0063.jpeg\nflowx-0064.jpeg\nflowx-0065.jpeg\nflowx-0066.jpeg\nflowx-0067.jpeg\nflowx-0127.jpeg\nflowx-0128.jpeg\nflowx-0129.jpeg\nflowx-0130.jpeg\nflowx-0131.jpeg\nflowx-0132.jpeg\nflowx-0192.jpeg\nflowx-0193.jpeg\nflowx-0194.jpeg\nflowx-0195.jpeg\nflowx-0196.jpeg\nflowx-0197.jpeg\nflowx-0257.jpeg\nflowx-0258.jpeg\nflowx-0259.jpeg\nflowx-0260.jpeg\nflowx-0261.jpeg\nflowx-0262.jpeg\nflowx-0322.jpeg\nflowx-0323.jpeg\nflowx-0324.jpeg\nflowx-0325.jpeg\nflowx-0326.jpeg\nflowx-0327.jpeg\nflowx-0387.jpeg\nflowx-0388.jpeg\nflowx-0389.jpeg\nflowx-0390.jpeg\nflowx-0391.jpeg\nflowx-0392.jpeg\n'
    
     默认输出是二进制的,所以我们需要decode一下, 编程字符串
    res = subprocess.check_output('ls .', shell=True).decode('utf-8')
    
    
    
    展开全文
  • linux 终端打印内容输出到文件

    千次阅读 2017-04-08 12:23:25
    经常需要查看linux终端打印的内容,打印内容太多时,最先打印的内容看不到了,因此用这种方法将打印内容输出到指定文件去查看。
  • LINUX C获取命令行输出结果

    千次阅读 2014-11-24 23:37:48
    在c程序中,system函数可以运行命令行,但是只能...首先用popen打开一个命令行的管道,然后通过fgets获得该管道传输的内容,也就是命令行运行的结果 在linux上运行的例子如下: void executeCMD(const char 
  • linux获取TCP连接数

    千次阅读 2018-06-23 08:50:02
    linux获取TCP连接数
  • linux获取在终端中输出的数据

    千次阅读 2018-05-18 19:38:00
     //将“ls -l”命令的输出 通过管道读取(“r”参数)到FILE* stream    wstream  =  fopen ( "test_popen.txt", "w+"); //新建一个可写的文件     fread( buf, sizeof(char), sizeof(buf), ...
  • linux获取系统时间戳

    千次阅读 2020-11-30 11:41:20
    linux获取系统时间戳 #include<iostream> #include <stdlib.h> #include <stdio.h> #include <sys/time.h> #include <unistd.h> int main(){ struct timeval tv; gettimeofday(&...
  • linux c程序中获取shell脚本输出

    万次阅读 2011-04-12 19:17:00
    1. 前言 Unix界有一句名言:“一行shell脚本...但是,system函数仅返回命令是否执行成功,而我们可能需要获得shell命令在控制台上输出的结果。例如,执行外部命令ping后,如果执行失败,我们希望得到ping的返回信息。
  • linux cat 输出 指定列字符

    千次阅读 2019-11-27 18:36:31
    linux cat 输出 指定列字符1,linux cat 输出 指定列字符 1,linux cat 输出 指定列字符 # ls -l total 4 -rw-r--r-- 1 root root drwxr-xr-x 2 3434 # ls -l | cut -c 5-15 l 4 r--r-- 1 ro r-xr-x 2 34 参考:...
  • linux C程序中获取shell脚本输出

    千次阅读 2008-06-16 22:44:00
    linux C程序中获取shell脚本输出琴 剑keensword007@sina.com> 本文使用docbook书写,您可以在这里获得xml文件 Abstract本文描述了从Linux程序中执行shell(程序、脚本)并获得输出结果的方法。Table of Contents1. ...
  • 使用reptyr ...比如你需要获取的程序PID为7191,那么需要执行的命令就是 reptyr 7191 如果出现这种情况 [-] Process 4118 (python) shares 7191's process group. Unable to attach. (This most comm...
  • linux获取hostname和获取ip

    千次阅读 2017-06-15 16:38:50
    1.获取hostname char host[MAX_HOST_NAME]; gethostname(host, MAX_HOST_NAME - 1); //Get host name string hostName(host); 2.获取ip #include #include #include #include #include #include int m
  • Linux seq_printf输出内容不完整的问题

    千次阅读 2018-12-24 20:13:00
    Linux seq_printf输出内容不完整的问题 写在前面的话:这是多年前在项目中遇到的问题,作为博客的开篇之作,有不足之处,请各位大侠斧正!谢谢! seq_file接口介绍  有许多种方法能够实现设备驱动(或其它内核...
  • Linux 获取grep前后几行

    千次阅读 2018-10-22 11:12:00
    Linux获取特定行的前后几行命令 场景: 一般我们都是grep word filename输出某行,如果想要输出包括该行上下文的n行呢? 比如: filename: hello world work hard chinaunix shell linux hello world work h...
  • // 可以通过这行来获取shell命令行中的每一行的输出 // printf("%s", buf_ps); strcat(result, buf_ps); if(strlen(result)>1024) break; } pclose(ptr); ptr = NULL; } else { printf("popen %s ...
  • linux获取时间戳

    千次阅读 2018-11-19 10:04:54
    date +%N
  • Linux -输出文本中的最后一列内容

    千次阅读 2016-12-26 14:57:43
    1,命令:awk '{print $NF}' filename 2,输出每一行的数据个数  命令:awk '{print NF} 'filename
  • #include <string> #include <time.h> #include <iostream> using namespace std; string getTime() { time_t timep; time (&timep); char tmp[64];... strftime(tmp, sizeo...
  • outputlinux grep 查找 匹配 内容的文件 且 输出 文件名inputbaidu linux 查找 内容 输出 文件名 http://www.cnblogs.com/wangkongming/p/4476933.htmlalgo案例grep eee .bashrc -l||echo 0
  • 以下是对在linux下c程序中获取shell脚本输出的实现方法进行了详细的分析介绍,需要的朋友可以过来参考下 . . 1. 前言 Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是...
  • Golang使用 os/exec 来执行 Linux 命令...1. 第一个示例(一次性读取命令所有输出内容) package main import ( "fmt" "io/ioutil" "os/exec" ) func main() { cmd := exec.Command("/bin/bash", "-c", `df ...
  • Linux,macOS,* BSD或类似Unix的操作系统上使用BASH / KSH / CSH / TCSH时,如何将终端输出保存到文件中? >标准输出 2>错误输出 <标准输入 如何将终端输出保存到文件 使用>标准输出符号将输出...
  • Linux 获取网卡信息

    千次阅读 2014-05-13 14:02:05
    Linux下想获取网卡信息(mac地址、ip、掩码、网关)可以有很多种fa
  • linux-shell命令之cat【输出档案内容

    万次阅读 2017-01-14 09:56:32
    功能说明: 把档案串连接后传到输出设备(显示屏或者文件)   语法介绍: cat [-AbeEnstTuv] [--help] [--version] fileName   参数说明: -n 或 --number 由 1 开始对所有输出的行数编号 -b 或...
  • linux获取后台进程的控制台数据

    千次阅读 2016-01-08 12:18:16
    linux提供了一个daemon函数,使得进程可以脱离控制台运行,实现了后台运行的效果。但是进程后台运行后,原本在终端控制台输出的数据就看不到了。那么,怎样才能找回这些数据?文章主题就围绕着如何获得后台进程的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 302,444
精华内容 120,977
关键字:

linux获取输出的内容

linux 订阅