linux编程中的资源和限制

本文介绍了一个名为limits的程序,该程序通过C语言实现,用于展示Linux系统中进程的资源使用情况,包括CPU使用量、当前优先级及文件大小限制,并演示了如何设置这些限制。

下面一个程序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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值