Liux 는 파이프 명령 을 사용 하여 ps 를 실행 하여 cpu 와 메모리 사용량 을 가 져 옵 니 다.
#include <stdio.h>
#include <unistd.h>
int main()
{
char caStdOutLine[1024]; // ps
char* pcTmp = NULL; //
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
" );
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 %%
", pcTmp );
// MEM
pcTmp = strtok( NULL, " " );
printf( "MEM = %s %%
", pcTmp );
break;
}
// I/O , , shell 。
// shell ,
// pclose() shell exit 。
pclose( fp );
}while ( 0 );
}
$ gcc main.c -o test
$ ./test
CPU = 1.0 %
MEM = 0.0 %
$ 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.