p5-12.c

来自「SUN Solaris8平台下进程间通信」· C语言 代码 · 共 55 行

C
55
字号
#include <sys/time.h>#include <sys/resource.h>#include <unistd.h>#include <stdio.h>#include <math.h>#include "err_exit.h"void work(){    FILE *fp;    int i;  double x = 4.5;        if ((fp = tmpfile()) == NULL)       err_exit("tmpfile error");    for(i = 0; i < 10000; i++){                  fprintf(fp,"Do some output\n");        if(ferror(fp)){            fprintf(stderr,"Error writing to temorary 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();    /*  查看work用去的CPU时间  */    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);    /*  改变文件大小限制为2K  */    r_limit.rlim_cur = 2048;    r_limit.rlim_max = 4096;    printf("Setting a 2K file size limit\n");    setrlimit(RLIMIT_FSIZE, &r_limit);    /*  尝试降低微调值  */    priority=setpriority(PRIO_PROCESS, getpid(),-20);    if (priority<0&&errno==EACCES)        printf("non super-user attempted to lower a process priority\n");    priority=getpriority(PRIO_PROCESS, getpid());    printf("Current priority=%d\n",priority);    work();    return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?