Chapter2-用户、文嫉宁操作与联机帮助.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Chapter2-用户、文嫉宁操作与联机帮助

Unix/Linux编程;第2章 用户、文件操作与联机帮助 --编写who命令;概念与技巧:;相关的系统调用: open、read、write、creat、lseek、close perror 相关命令: man who cp login;主要内容:;2.1.1 who命令能做些什么? 2.1.2 who命令是如何工作的? 2.1.3 如何编写who?;2.1.1 who命令能做些什么?;2.1.2 who命令是如何工作的?;who的工作原理:;2.1.3 如何编写who;(2)答案:使用open、read和close;fd = open ( name , mode ) n = read ( fd , array , numchars ) 目标:把数据读取到缓冲区 返回值:-1 遇到错误 numread 成功读取,返回读取的字节 数目。 Int rusult = close ( int fd ) 关闭进程和文件fd之间的连接,如果关闭的过 程中出现错误,close返回 -1 。 ;(3)编写 who1.c;show_info( struct utmp *utbufp ) { printf(%-8.8s, utbufp-ut_name); /* the logname*/ printf( ); /* a space*/ printf(%-8.8s, utbufp-ut_line); /* the tty*/ printf( ); /* a space*/ printf(%10ld, utbufp-ut_time); /* login time*/ printf( ); /* a space*/ #ifdef SHOWHOST printf((%s), utbufp-ut_host); /* the host */ #endif printf(\n); /* newline */ };两处问题需要改进:;2.2.1 问题1:cp命令能做些什么? 答案:复制文件 典型用法:$ cp source – file target – file 如果 target – file 所指的文件不存在,cp就创建这个文件,如果已经存在就覆盖。 2.2.2 问题2:cp命令是如何创建/重写文件的? 答案: creat write;创建/重写文件 int fd = creat (char * filename,mode_t mode) creat告诉内核创建一个名为filename的文件,如果这个文件不存在,就创建它;如果已经存在,就把它的内容清空,把文件的长度设为0。 如果内核成功创建文件,则把文件的许可位设置为mode所指定的值。 写文件 n = write ( fd , buffer , num ) 如果内核不能写入或写入失败,write返回-1,如果成功写入,则返回写入的字节数。;2.2.3 问题3:如何编写cp;#define BUFFERSIZE 4096 #define COPYMODE 0644 main( int ac, char *av[] ) { int in_fd, out_fd, n_chars; char buf[BUFFERSIZE]; /*check args */ if ( ac != 3 ) { fprintf( stderr, usage: %s source destination\n, *av); exit(1); } ;/*open files*/ if ( ( in_fd=open(av[1], O_RDONLY) ) == -1 ) oops (Cannot open , av[1]); if ( ( out_fd = creat( av[2], COPYMODE ) ) == -1 ) oops( Cannot creat, av[2]); /*copy files */ while ( (n_chars = read ( in_fd , buf, BUFFERSIZE )) 0 ) if ( write( out_fd, buf, n_chars ) != n_chars ) oops (Write error t

文档评论(0)

ayangjiayu5 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档