• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > linux使用管道命令执行ps获取cpu与内存占用率

linux使用管道命令执行ps获取cpu与内存占用率

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了linux管道命令,linux中管道命令,linux 有名管道,linux 管道,linux中管道等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

    char caSelfPID[10];      // 自身进程的PID字符串
    char caPSCmd[24];        // "ps aux | grep PID"命令字符串

    memset( caSelfPID, 0, sizeof( caSelfPID ) );
    sprintf( caSelfPID,
             "%d",
             getpid() );

    memset( caPSCmd, 0, sizeof( caPSCmd ) );
    sprintf( caPSCmd,
             "ps aux | grep %d",
             getpid() );

    do // 非循环,只是为了方便控制分支层次,便于控制分支流向
    {
        // 通过创建一个管道,调用 fork 产生一个子进程,
        // 执行一个 shell 以运行命令来开启一个进程。
        // 这个进程必须由 pclose() 函数关闭。
        FILE* fp = popen( caPSCmd, // 一个指向以 NULL 结束的 shell 命令字符串的指针,
                                   // 这行命令将被传到 bin/sh 并使用 -c 标志,
                                   // 那么 shell 将执行这个命令从这个字符串中读取。
                          "r" );   // 文件指针连接到 shell 命令的标准输出

        if ( NULL == fp )
        {
            printf( "call popen is failed\n" );
            break;
        }

        memset( caStdOutLine, 0, sizeof( caStdOutLine ) );
        while ( NULL != fgets( caStdOutLine,
                               sizeof( caStdOutLine ),
                               fp ) )
        {
            // 再以空格分隔符拆分字符串
            pcTmp = strtok( caStdOutLine, " " );

            // 用户名跳过,直接匹配 PID ,不匹配跳过
            pcTmp = strtok( NULL, " " );
            if ( 0 != strncasecmp( caSelfPID,
                                   pcTmp,
                                   strlen( caSelfPID ) ) )
            {
                continue;
            }

            // 读出进程自身 CPU 占用率
            pcTmp = strtok( NULL, " " );
            printf( "CPU = %s %%\n", pcTmp );

            // 读出进程自身 MEM 占用率
            pcTmp = strtok( NULL, " " );
            printf( "MEM = %s %%\n", pcTmp );

            break;
        }

        // 关闭标准 I/O 流,等待命令执行结束,然后返回 shell 的终止状态。
        // 如果 shell 不能被执行,
        // 则 pclose() 返回的终止状态与 shell 已执行 exit 一样。
        pclose( fp );

    }while ( 0 );
}
</div>

$ ps  aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
nsc      24505  1.0  0.0   2004   232 pts/0    S+   09:46   0:00 ./test
</div>

</div>

您可能想查找下面的文章:

  • linux使用管道命令执行ps获取cpu与内存占用率
  • linux使用管道命令执行ps获取cpu与内存占用率

相关文章

  • linux命令之find命令简单概述
  • 完美解决gvim的菜单乱码问题
  • 101个shell脚本 猜数字游戏代码
  • Ubuntu、Linux Mint一键安装Chrome浏览器的Shell脚本分享
  • 关于Linux反空闲设置的两种方法总结
  • Shell中比较大小简洁总结
  • 检测网站down掉后自动发信的shell脚本代码
  • Shell脚本定期清空大于1G的日志文件
  • 简化shell终端命令输入的脚本式快捷键工具
  • Shell脚本查看进程内存真实占用情况

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Linux 下xargs命令详解及xargs与管道的区别
    • shell脚本实现快速生成xml格式sitemap实例分享
    • 每天一个linux命令 chgrp命令
    • Shell脚本中实现更新PHP5
    • 如何短时间内学好一门语言 shell脚本语言为例
    • Linux xargs命令详细介绍
    • kill特定进程的shell脚本代码
    • nginx日志切割脚本分享
    • linux shell 管道命令(pipe)使用及与shell重定向区别
    • Ubuntu用户之间相互切换方法(推荐)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有