Sponsored Content
Full Discussion: getrusage()
Operating Systems HP-UX getrusage() Post 302122770 by jim mcnamara on Thursday 21st of June 2007 09:53:39 AM
Old 06-21-2007
Code:
#include <stdlib.h>
#include <sys/resource.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>     


void process(struct rusage *p, char *when)
{
	printf("%s\n", when);
	printf(" /* user time used */                   %8d  %8d\n",  p->ru_utime.tv_sec,p->ru_utime.tv_usec   );
	printf(" /* system time used */                 %8d  %8d\n",  p->ru_stime.tv_sec,p->ru_stime.tv_usec   );
	printf(" /* integral shared memory size */      %8d\n",  p->ru_ixrss           );
	printf(" /* integral unshared data  */          %8d\n",  p->ru_idrss           );
	printf(" /* integral unshared stack  */         %8d\n",  p->ru_isrss           );
	printf(" /* page reclaims */                    %8d\n",  p->ru_minflt          );
	printf(" /* page faults */                      %8d\n",  p->ru_majflt          );
	printf(" /* swaps */                            %8d\n",  p->ru_nswap           );
	printf(" /* block input operations */           %8d\n",  p->ru_inblock         );
	printf(" /* block output operations */          %8d\n",  p->ru_oublock         );
	printf(" /* # of characters read/written */     %8d\n",  p->ru_ioch            );
	printf(" /* messages sent */                    %8d\n",  p->ru_msgsnd          );
	printf(" /* messages received */                %8d\n",  p->ru_msgrcv          );
	printf(" /* signals received */                 %8d\n",  p->ru_nsignals        );
	printf(" /* voluntary context switches */       %8d\n",  p->ru_nvcsw           );
	printf(" /* involuntary  */                     %8d\n",  p->ru_nivcsw          );

}


int main()
{
	  int ret;
	  char *buf;
	  int i=0;
	  int who= RUSAGE_SELF;
	  struct rusage usage;
	  struct rusage *p=&usage;

	  ret=getrusage(who,p);
	  process(p, "-------------before");
	  /* do stuff here */
      ret=getrusage(who,p);
	  process(p, "\n\n-------------after we run foo1");    

	return 0;
}

Note getrusage() works only for a process and its children.
 

We Also Found This Discussion For You

1. Programming

fork-getrusage

Hello everybody! I wrote the following code: ... int main() { pid_t pid; for (int i=0;i<100;i++) { pid=fork(); if(pid==0) {execl("md5sum","myprog",NULL);exit(1)} else if(pid>0) { waitpid(pid,&status,0);getrusage(RUSAGE_CHILDREN,&usage);} The... (3 Replies)
Discussion started by: nicos
3 Replies
getrusage(2)							System Calls Manual						      getrusage(2)

NAME
getrusage - get information about resource utilization SYNOPSIS
DESCRIPTION
The function provides measures of the resources used by the current process or its terminated and waited-for child processes. If the value of the who argument is information is returned about resources used by the current process. If the value of the who argument is information is returned about resources used by the terminated and waited-for children of the current process. If the child is never waited for (for instance, if the parent has set or sets to the resource information for the child process is discarded and not included in the resource information provided by The r_usage argument is a pointer to an object of type in which the returned information is stored. If the current process is multi-threaded, returns the information about the resources used by all the active and the reaped threads/light- weight processes in the current process if the value of the who argument is If the value of the who argument is in a multi-threaded process, information returned is the same as it would be for a single-threaded process. RETURN VALUE
Upon successful completion, returns Otherwise, is returned, and is set to indicate the error. ERRORS
The function will fail if: [EINVAL] The value of the who argument is not valid. SEE ALSO
exit(2), sigaction(2), time(1), times(2), wait(1), <sys/resource.h>. getrusage(2)
All times are GMT -4. The time now is 04:33 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy