if(get_file_size_time(direntp- 4。管道文件 Linux提供了许多的过滤和重定向程序,比如more cat 等等.还提供了< >; | <<等等重定向操作符.在这些过滤和重 定向程序当中,都用到了管 道这种特殊的文件.系统调用pipe可以创建一个管道. #include int pipe(int fildes[2]); pipe调用可以创建一个管道(通信缓冲区).当调用成功时,我们可以访问文件描述符fild es[0],fildes[1].其中fildes[0]是用来读的文件描述符,而fildes[1]是用来写的文件描 述符. 在实际使用中我们是通过创建一个子进程,然后一个进程写,一个进程读来使用的. 关于进程通信的详细情况请查看进程通信 #include int main(int argc,char **argv) { char buffer[BUFFER+1]; int fd[2]; if(argc!=2) { fprintf(stderr,\exit(1); } if(pipe(fd)!=0) { fprintf(stderr,\exit(1); } if(fork()==0) { close(fd[0]); printf(\snprintf(buffer,BUFFER,\write(fd[1],buffer,strlen(buffer)); printf(\exit(0); } else { close(fd[1]); printf(\memset(buffer,'\\0',BUFFER+1); read(fd[0],buffer,BUFFER); printf(\exit(1); } } 为了实现重定向操作,我们需要调用另外一个函数dup2. #include int dup2(int oldfd,int newfd); dup2将用oldfd文件描述符来代替newfd文件描述符,同时关闭newfd文件描述符.也就是说 , 所有向newfd操作都转到oldfd上面.下面我们学习一个例子,这个例子将标准输出重定向 到一个文件. #include #define BUFFER_SIZE 1024 int main(int argc,char **argv) { int fd; char buffer[BUFFER_SIZE]; if(argc!=2) { fprintf(stderr,\exit(1); } if((fd=open(argv[1],O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR))==-1) { fprintf(stderr,\exit(1); } if(dup2(fd,STDOUT_FILENO)==-1) { fprintf(stderr,\exit(1); } fprintf(stderr,\fprintf(stderr,\while(1) { fgets(buffer,BUFFER_SIZE,stdin); if(feof(stdin))break; write(STDOUT_FILENO,buffer,strlen(buffer)); } exit(0); } 好了,文件一章我们就暂时先讨论到这里,学习好了文件的操作我们其实已经可以写出一 些比较有用的程序了.我们可以编写一个实现例如dir,mkdir,cp,mv等等常用的文件操作 命令了. 想不想自己写几个试一试呢? 4)程序设计入门--时间概念 前言:Linux下的时间概念 这一章我们学习Linux的时间表示和计算函数 时间的表示 时间的测量 计时器的使用 1。时间表示 在程序当中,我们经常要输出系统当前的时间,比如我们使用date命令 的输出结果.这个时候我们可以使用下面两个函数 #include time_t time(time_t *tloc); char *ctime(const time_t *clock); time函数返回从1970年1月1日0点以来的秒数.存储在time_t结构之中.不过这个函数的返 回值对于我们来说没有什么实际意义.这个时候我们使用第二个函数将秒数转化为字符串 .. 这个函数的返回类型是固定的:一个可能值为. Thu Dec 7 14:58:59 2000 这个字符串 的长度是固定的为26 2。时间的测量 有时候我们要计算程序执行的时间.比如我们要对算法进行时间分析 ..这个时候可以使用下面这个函数. #include int gettimeofday(struct timeval *tv,struct timezone *tz); strut timeval { long tv_sec; /* 秒数 */ long tv_usec; /* 微秒数 */ };
linux下C编程详解(4)
2020-02-21 17:43
linux下C编程详解(4).doc
将本文的Word文档下载到电脑
下载失败或者文档不完整,请联系客服人员解决!