《Linux程序设计 第四版》之第四章的练习题
1、P128
一个获取日期 时间 格式化获取时间 日期 的程序。
#include<stdio.h> #include<time.h> int main(int argc,char** argv) { struct tm* time1,*time_trans; //时间数据结构 time_t alt; char c_time[128]; char* result; char* result1=""; time(&alt); time1=localtime(&alt); //返回本地时间存到数据结构中 printf("the date is %d.%d.%d \n",time1->tm_year,time1->tm_mon,time1->tm_mday); printf("the date is %s \n",ctime(&alt)); //ctime将数据结构中转换成字符串返回 strftime(c_time,128,"%Y %B %d %p %I:%M:%S",time1); //格式化将时间存到c_time字符串 printf("%s\n", c_time); strcpy(c_time,"12 Mar 2008,12:13:14"); printf("Now trans the time %s \n", c_time); result=strptime(c_time,"%d %b %Y,%R:%S",time_trans); printf("%s \n", result); //printf("%d", strcmp(result1,"ye")); if(strcmp(result,result1)==0) { printf("%d %d %d\n", time_trans->tm_hour,time_trans->tm_min,time_trans->tm_sec); } return 0; }
2、P130、132
一个创建临时文件、获取用户信息、输出Log的程序。
#include<stdio.h> #include<pwd.h> #include<sys/types.h> #include<syslog.h> int main(int argc,char** argv) { uid_t id; struct passwd *pw; FILE* tempFile; char* fileName; id=getuid(); //获取用户的uid pw=getpwuid(id); //获取用户uid的pw文件信息 printf("UID PASSWORD ENTRY:\n name=%s,uid=%d,home=%s,shell=%s\n",pw->pw_name,pw->pw_uid, pw->pw_dir,pw->pw_shell); pw=getpwnam("root"); //获取用户root的pw文件信息 printf("ROOT PASSWORD ENTRY:\n name=%s,uid=%d,home=%s,shell=%s\n",pw->pw_name,pw->pw_uid, pw->pw_dir, pw->pw_shell); while(pw=getpwent()) //依次获取所有用户的pw文件信息 { //printf("UID PASSWORD ENTRY:\n name=%s,uid=%d,home=%s,shell=%s\n",pw->pw_name,pw->pw_uid, pw->pw_dir, pw->pw_shell); } fileName=tmpnam((void*)0); //返回一个唯一的文件名 tempFile=fopen(fileName,"r"); if(!tempFile) { syslog(LOG_ERR|LOG_USER,"oops-%m\n"); } tempFile=tmpfile(); //返回一个有唯一的文件名的文件file* if(!tempFile) { syslog(LOG_ERR|LOG_USER,"%m\n"); } return 0; }
3、P141
一个资源限制 CPU消耗的程序。
#include<stdio.h> #include<sys/time.h> #include<sys/types.h> #include<sys/resource.h> #include<math.h> void fun() { char* tmpStr="what's wrong \n"; FILE* f; //f=fopen("haha","w+"); f=tmpfile(); int i=0; if (!f) { printf("??\n"); } for(;i<1000000;i++) { fwrite(tmpStr, sizeof(tmpStr),1,f); if(ferror(f)) { fprintf(stderr,"WRONG"); return ; } } i=0; for (; i < 10000000; ++i) { int k; k=(1.1+i*i); } //f.close(); } int main(int argc,char** argv) { struct rusage r_usage; struct rlimit r_limit; int pro; fun(); getrusage(RUSAGE_SELF,&r_usage); //获得程序运行的信息 存到结构体rusage中 printf("CPU usage: User=%d.%06d,system==%d.%06d\n",r_usage.ru_utime.tv_sec, r_usage.ru_utime.tv_usec,r_usage.ru_stime.tv_sec,r_usage.ru_stime.tv_sec); pro=getpriority(PRIO_PROCESS,getpid()); //获得程序的优先级 printf("Current Priority:%d\n",pro); r_limit.rlim_cur=2048; r_limit.rlim_max=4096; setrlimit(RLIMIT_FSIZE,&r_limit); //设置程序的一些资源限制 fun(); return 0; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。