linux编程中的资源和限制

下面一个程序limits.c实现了能够显示程序运行过程中优先级的显示和软硬看门狗的实现:

#include <sys/types.h>
#include <sys/resource.h>
#include <sys/time.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void work()
{
  FILE *f;
  int i;
  double x=4.5;
  f=tmpfile();
  for(i=0;i<10000;i++)
  {
   fprintf(f,"Do some output");
   if(ferror(f)){
     fprintf(stderr,"Error writing to temporary file\n");
     exit(1);
     }
   }
   
  for(i=0;i<1000000;i++)
    x=log(x*x+3.21);

}

int main()
{
  struct rusage r_usage;
  struct rlimit r_limit;
  int priority;

  work();
  getrusage(RUSAGE_SELF,&r_usage);
 
  printf("CPU usage: User=%ld.%06ld, System=%ld.%06ld\n",r_usage.ru_utime.tv_sec,r_usage.ru_utime.tv_usec,r_usage.ru_stime.tv_sec,r_usage.ru_stime.tv_usec);

  priority=getpriority(PRIO_PROCESS,getpid());
  printf("Current priority=%d\n",priority);
 
  getrlimit(RLIMIT_FSIZE,&r_limit);
  printf("Current FSIZE limit:soft=%ld,hard=%ld\n",r_limit.rlim_cur,r_limit.rlim_max);

  r_limit.rlim_cur=2048;
  r_limit.rlim_max=4096;
  printf("Setting a 2k file size limit \n");
  setrlimit(RLIMIT_FSIZE,&r_limit);
 
 work();

 exit(0);
}

在linux命令行中:cc -o limits limits.c -lm

$:./limits

更改优先级:nice ./limits


你可能感兴趣的:(编程,linux,struct,File,System,output)