Linux下C语言编程基础知识(7)

2018-12-14 22:59

#include #include #include #include #include #include

static int get_file_size_time(const char *filename) {

struct stat statbuf;

if(stat(filename,&statbuf)==-1) {

printf(\ return(-1); }

if(S_ISDIR(statbuf.st_mode))

return(1);

//exit(1);

if(S_ISREG(statbuf.st_mode))

printf(\

filename,statbuf.st_size,ctime(&statbuf.st_mtime)); }

int main(int argc,char **argv) {

DIR *dirp;

struct dirent *direntp; int stats; if(argc!=2) {

return(0);

}

printf(\exit(1);

if(((stats=get_file_size_time(argv[1]))==0)||(stats==-1))

exit(1);

if((dirp=opendir(argv[1]))==NULL) { }

while((direntp=readdir(dirp))!=NULL)

if(get_file_size_time(direntp-

4。管道文件

Linux提供了许多的过滤和重定向程序,比如more cat 等等.还提供了< > | <<等等重定向操作符.在这些过滤和重 定向程序当中,都用到了管道这种特殊的文件.系统调用pipe可以创建一个管道.

#include int pipe(int fildes[2]);

pipe调用可以创建一个管道(通信缓冲区).当调用成功时,我们可以访问文件描述符fildes[0],fildes[1].其中fildes[0]是用来读的文件描述符,而fildes[1]是用来写的文件描述符. 在实际使用中我们是通过创建一个子进程,然后一个进程写,一个进程读来使用的. 关于进程通信的详细情况请查看进程通信

Printf(\argv[1],strerror(errno)); exit(1);

#include #include #include #include #include #include #include

#define BUFFER 255

int main(int argc,char **argv) {

char buffer[BUFFER+1]; int fd[2]; if(argc!=2) { }

if(pipe(fd)!=0) { }

if(fork()==0) {

close(fd[0]);

printf(\fprintf(stderr,\exit(1);

fprintf(stderr,\exit(1);

} else { } }

snprintf(buffer,BUFFER,\write(fd[1],buffer,strlen(buffer)); printf(\exit(0);

close(fd[1]);

printf(\

memset(buffer,'\\0',BUFFER+1); //Reset the buffer before read read(fd[0],buffer,BUFFER);

printf(\exit(1);

为了实现重定向操作,我们需要调用另外一个函数dup2. #include

int dup2(int oldfd,int newfd);

dup2将用oldfd文件描述符来代替newfd文件描述符,同时关闭newfd文件描述符.也就是说, 所有向newfd操作都转到oldfd上面.下面我们学习一个例子,这个例子将标准输出重定 向到一个文件.

#include #include #include #include #include #include

#include

#define BUFFER_SIZE 1024

int main(int argc,char **argv) { int fd;

char buffer[BUFFER_SIZE]; if(argc!=2) { }

if((fd=open(argv[1],O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR))==-1) {

fprintf(stderr,\

fprintf(stderr,\exit(1);

Error:%s\\n\\a\ }

if(dup2(fd,STDOUT_FILENO)==-1) {

fprintf(stderr,\exit(1);

Error:%s\\n\\a\ }

fprintf(stderr,\ fprintf(stderr,\ while(1) {

exit(1);


Linux下C语言编程基础知识(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浅谈在高中数学教学中引进数学史的意义

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: