第06章 unix系统编程基础.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:58 大小:176KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第06章 unix系统编程基础.ppt

第06章unix系统编程基础.ppt

预览

免费试读已结束,剩余 48 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

一个简单的C程序示例多个文件组成的程序编译和运行makefile与进程相关的apigetpwuid用户管理示例程序(1/2)用户管理示例程序(2/2)进程控制相关的APIexec族APIvoidmain(void){pid_tchild;intstatus;printf("Thiswilldemostratehowtogetchildstatus\n");if((child=fork())==-1){printf("ForkError:%s\n",strerror(errno));exit(1);}elseif(child==0){inti;printf("Iamthechild:%ld\n",getpid());for(i=0;i<1000000;i++)sin(i);i=5;printf("Iexitwith%d\n",i);exit(i);}进程控制示例(2/2)后台进程示例文件相关的API文件复制示例取文件的属性文件的属性目录文件的操作staticintget_file_size_time(constchar*filename){structstatstatbuf;if(stat(filename,&statbuf)==-1){printf("Getstaton%sError:%s\n",filename,strerror(errno));return(-1);}if(S_ISDIR(statbuf.st_mode))return(1);if(S_ISREG(statbuf.st_mode))printf("%ssize:%ldbytes\tmodifiedat%s",filename,statbuf.st_size,ctime(&statbuf.st_mtime));return(0);}intmain(intargc,char**argv){DIR*dirp;structdirent*direntp;intstats;if(argc!=2){printf("Usage:%sfilename\n\a",argv[0]);exit(1);}if(((stats=get_file_size_time(argv[1]))==0)||(stats==-1))exit(1);if((dirp=opendir(argv[1]))==NULL){printf("OpenDirectory%sError:%s\n",argv[1],strerror(errno));exit(1);}while((direntp=readdir(dirp))!=NULL)if(get_file_size_time(direntp->d_name))closedir(dirp);exit(1);}管道文件管道示例if(fork()==0){close(fd[0]);printf("Child[%d]Writetopipe\n\a",getpid());snprintf(buffer,BUFFER,"%s",argv[1]);write(fd[1],buffer,strlen(buffer));printf("Child[%d]Quit\n\a",getpid());exit(0);}else{close(fd[1]);printf("Parent[%d]Readfrompipe\n\a",getpid());memset(buffer,‘‘,BUFFER+1);read(fd[0],buffer,BUFFER);printf("Parent[%d]Read:%s\n",getpid(),buffer);exit(1);}}重定向示例unix中的信号产生信号的API信号的处理方式信号的一个简单示例屏蔽信号的相关API信号屏蔽示例改变信号的处置方式捕获信号示例intpause(void);intsigsuspend(constsigset_t*sigmask);intsigsetjmp(sigjmp_bufenv,intval);voidsiglongjmp(sigjmp_bufenv,intval);检查邮件的后台程序voidsend_mail_notify(void){fprintf(stderr,"Newmailhasarrived7\n");}voidturn_on_notify(intsigno)