• 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与内存占用率

相关文章

  • shell脚本中常见的一些特殊符号和作用详解
  • Shell脚本实现检测进程是否正在运行
  • 编写你的shell其实很简单
  • Linux Shell 脚本编程入门教程
  • 一个shell写的ping函数
  • 阿里云云服务器Linux系统更新yum源Shell脚本
  • linux中编写自己的并发队列类(Queue 并发阻塞队列)
  • 一个简单的转换输出的shell脚本代码
  • shell grep 查找进程的小技巧
  • linux中压缩与备份命令大全

文章分类

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

最近更新的内容

    • linux下source命令使用详解
    • shell脚本实现随机生成10个8位密码
    • shell查找符号链接及其指向目标的方法介绍
    • git多账号登录问题解析
    • Linux 中C语言getcwd()函数的用法
    • Shell脚本实现的基于SVN的代码提交量统计工具
    • linux网络相关命令汇总(6)
    • 获取服务器信息的Shell脚本分享(ubuntu、centos测试通过)
    • 使用netcat(瑞士军刀)进行文件传输
    • Linux启动新进程的几种方法及比较

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

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