how to let hogs run only once,don't update every 3 seconds.

bridged with qnx.rtos
Post Reply
dxwang

how to let hogs run only once,don't update every 3 seconds.

Post by dxwang » Sun Apr 15, 2007 8:30 am

I want to print the percent of cpu for idle process in my c program.
1) if pclose(ptr) is used (this means I just want hogs run only once).
the program can't print the message I want, just print the message
about the broken pipe. (if use fd , the program run correctly. I know
this problem occurs because hogs update message every 3 seconds . but
I just want to print message only once.)

2) if pclose(ptr) isn't used (this means print the message all the
time ) , the program can't print the message immediately. I have
tried fflush(stdout) and setvbuf为_IONBF,but still can't solve it


I don't know how to slove this two programs. Thanks.


char *cmd = "hogs | awk '{if($1==1)print$4}'";
// char *cmd = "hogs | awk '{print$4}'";
char buf [10];
FILE *ptr;
short idlecpu;
if ((ptr = popen(cmd, "r")) != NULL)
if(fgets(buf,10, ptr) != NULL)
{
if(fgets(buf,10, ptr) != NULL)
idlecpu=atoi(buf);
printf("idlecpu=%d \n",idlecpu);
printf("%s ",buf);

}
pclose(ptr);
printf("exit!");

Post Reply

Return to “qnx.rtos”