知识养成了思想,思想同时又在融化知识。这篇文章主要讲述Linux CC 语言和 linux cmd 混用相关的知识,希望能为你提供帮助。
C 程序获取本进程的PID号,
利用PID号,使用linux命令查询 ???/proc/PID/status?
?? 下的 ??VmSize?
? 字段
// test script.c
// generate workload
#include < stdio.h>
#include < stdlib.h>
#include < unistd.h>
#include < string.h>
#define LEN 1000
void my_system(const char *cmd)
char result[10240] = 0;
char buf[1024] = 0;
FILE *fp = NULL;
if( (fp = popen(cmd, "r")) == NULL )
printf("popen error!\\n");
return;
while(fgets(buf, sizeof(buf), fp))
strcat(result, buf);
pclose(fp);
printf("%s\\n", result);
void main(int argc, char* argv[])
unsigned long int PID = getpid();
char cmd[50] = 0;
sprintf(cmd, "cat /proc/%ld/status | grep VmSize", PID);
for(int i = 0; i < LEN; i++)
printf("i=%d, malloc addr=%p\\n", i, (char*)malloc(1024));
my_system(cmd);
// sleep(1);
// printf("\\n\\n");
更进一步,只提取 VmSize 的值。
// test script.c
// generate workload
#include < stdio.h>
#include < stdlib.h>
#include < unistd.h>
#include < string.h>
#define LEN 1000
void my_system(const char *cmd)
char result[10240] = 0;
char buf[1024] = 0;
FILE *fp = NULL;
if( (fp = popen(cmd, "r")) == NULL )
printf("popen error!\\n");
return;
while(fgets(buf, sizeof(buf), fp))
strcat(result, buf);
pclose(fp);
// printf("%s\\n", result);
unsigned long int VmSize = 0;
char str[20] = 0;
// printf("result: %s\\n", result);
sscanf(result, "%s%ld", str, & VmSize);
printf("%ld\\n", VmSize);
void main(int argc, char* argv[])
unsigned long int PID = getpid();
char cmd[50] = 0;
sprintf(cmd, "cat /proc/%ld/status | grep VmSize", PID);
for(int i = 0; i < LEN; i++)
printf("i=%d, malloc addr=%p\\n", i, (char*)malloc(1024));
my_system(cmd);
// sleep(1);
// printf("\\n\\n");
【Linux CC 语言和 linux cmd 混用】
推荐阅读
- 文件系统实验奔跑吧Linux内核
- Linux CPOSIX 共享内存使用
- Linux C进程内存占用查看
- Linux2.4 任务响应模型
- ensp综合端口基础配置(Hybird+access+Trunk)
- 3种方式!让你3秒在51CTO博客快速发布一篇博文
- 哥几个又来看啦,进来吧逃不掉的(Linux精中之精)
- PL/SQL集合(table)嵌套表操作实例讲解实例
- PL/SQL 用户自定义异常操作实例