zoukankan      html  css  js  c++  java
  • linux 文件操作编程

    Linux中所有的设备和文件的操作都使用文件描述符来进行。

    文件描述符是一个非负的整数,它是一个索引值,指向内核中每个进程打开的记录表。

    当打开一个文件或者创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件的时候,就要把文件描述符作为参数传递给相应的函数。

    一个进程时,都会打开3个文件:标准输入、标准输出和标准出错处理。分别对应文件描述符的0、1、2。

    rename函数

    #include <stdio.h>

    int rename(const char *oldpath, const char *newpath);

    说明:oldpath是文件的原路径, newpath是文件的新路径。

    功能:文件重命名 。 返回值:运行成功返回0。

    remove函数

    #include <stdio.h>

    int remove(const char *pathname);

    说明:pathname是文件的路径。 功能:删除文件 。 返回值:运行成功返回0。

    chown函数

    #include <sys/types.h>

    #include <unistd.h>

    int chown(const char *path, uid_t owner, gid_t group);

    说明:path是要修改文件的路径,owner指定的所有者, group是提定的文件组。 功能:修改文件的所有者 。 返回值:运行成功返回0,否则-1。

    chmod函数。

    #include <sys/types.h>

    #include <sys/stat.h>

    int (const char *path, mode_t mode); 说明:修改文件的访问权限

    getcwd函数

    #include <unistd.h>

    char *getcwd(char *buf, size_t size);

    说明:buf 是返回的目录名,buf 和size可以同时为设置0 返回值:成功是目录名 错误-1

    #include<unistd.h>

    #include<sdtio.h>

    int main(int argc, char* argv[])

    {

          chdir("/tmp");

          printf("current working directory: %s ",getcwd(NULL,NULL));

    }

    执行 current working directory :/tmp

    chdir函数 #include <unistd.h> i

    nt chdir(const char *path);

    说明:指定的目录路径。 功能:改变当前工作目录 。

    返回值:运行成功返回0,否则-1。

    opendir函数

    #include <sys/types.h>

    #include <dirent.h>

    DIR *opendir(const char *name); 说明:指定的目录路径。

    功能:打开目录 。

    返回值:运行成功返回目录的目录流,否则NULL。

    closedir函数

    #include <sys/types.h>

    #include <dirent.h>

    int closedir(DIR *dir);

    说明:已打开的目录。 功能:关闭已打开的目录 。

    返回值:运行成功返回目录的目录流,否则NULL。

    readdir函数

    #include <sys/types.h>

    #include <dirent.h>

    struct dirent * readdir(DIR *dir);

    说明:读取目录中一个文件的名字并将目录流指针后移。

    功能:读取目录中一个文件的名字,并将目录流指针后移。

    返回值:返回一个文件的名字,到目录尾或发生错误返回NULL。

    struct dirent {

                          ino_t d_ino;

                           ff_t d_ff;

                           signed short int d_reclen;

                             unsigned char d_type;

                             char d_name[256];

                             };

    telldir函数

    #include <sys/types.h>

    #include <dirent.h>

    off_t telldir(DIR *dir); 说明:指定的目录流。 功能:获得指定目录流当前指针位置 。

    返回值:运行成功返回当前指针位置,否则-1。

    seekdir函数

    #include <sys/types.h>

    #include <dirent.h>

    void seekdir(DIR *dir, off_t offset);

    说明: dir是指定的目录流,offset是指定的指针位置 功能:设置指定的目录流的指针位置。

    返回值:无。

    fopen函数

    #include <stdio.h>

    FILE *fopen(const char *path, const char *mode);

    说明: mode是文件打开的模式,r以只读形式打开,r+可读写形式打开,文件内容被清空,a,以追加方式打开,文件不存则新建,a+追加可读写形式打开,文件不存则新建。

    功能:打开文件,获取文件流指针 。 返回值:文件的流指针。

    #include <stdio.h>

    main() {

    FILE * fp =fopen(0,”w+”);

    fprintf(fp,”%s ”,”hello!”);

    fclose(fp); }

    fclose函数

    #include <stdio.h> int fclose(FILE *stream);

    说明: 文件流指针。 功能:关闭已打开的文件 。

    返回值:运行成功返回当前指针位置,否则EOF。

    ftell函数

    #include <stdio.h> long ftell(FILE *stream);

    说明: 文件流指针。 功能:获取文件流指针当前的读写位置 。

    返回值:运行成功返回当前读写位置,否则-1。

    fseek函数

    #include <stdio.h>

    int fseek(FILE *stream, long offset, int whence);

    说明: 文件流指针。

    功能: stream是指定的文件流指针, offset是指定的读写位置,

    whence是设置读写位置的基准 。 返回值:运行成功返回0,否则-1。

    #include <stdio.h>

    main() {

      FILE * stream; long offset;

    fpos_t pos;

    stream=fopen(“/etc/passwd”,”r”);

    fseek(stream,5,SEEK_SET);

    printf(“offset=%d ”,ftell(stream));

    rewind(stream);

    fgetpos(stream,&pos);

    printf(“offset=%d ”,pos);

    pos=10;

    fsetpos(stream,&pos);

    printf(“offset = %d ”,ftell(stream)); fclose(stream);

    } 执行 offset = 5 offset =0 offset=10

    feof函数

    #include <stdio.h>

    int (FILE *stream);

    说明: 文件流指针。

    功能:判断文件流指针的当前读写位置是否已达到文件尾 。

    返回值:达到文件尾返回非0,否则0。

    fgetc函数

    #include <stdio.h>

    int fgetc(FILE *stream);

    说明: 文件流指针。

    功能:从指定的文件流中读取一个字符 。

    返回值:读到的字符,达到文件尾时返回EOF。

    #include <stdio.h>

    main() {

    FILE*fp;

    int c;

    fp=fopen(“exist”,”r”);

    while((c=fgetc(fp))!=EOF)

    printf(“%c”,c);

    fclose(fp);

    }

    fputc函数

    #include <stdio.h>

    int fputc(int c, FILE *stream);

    说明: c是要写入的字符,stream是指定的文件流指针。

    功能:将单个字符写入指定的文件流中 。 返回值:运行成功返回参数c,失败返回EOF

    fgets函数

    #include <stdio.h>

    char *fgets(char *s, int size, FILE *stream);

    说明: s是字符串读取后存放的首地址, size是存放字符串的数据体积,( size -1)。

    功能:从指定的文件流中读取一个字符串 。 返回值:运行成功返回s,失败返回NULL。

    fputs函数

    #include <stdio.h>

    int fputs(char *s, FILE *stream);

    说明: S是要写入的字符,stream是指定的文件流指针。

    功能:将字符串写入指定的文件流中 。

    返回值:运行成功返回写入文件中字符的个数,失败返回EOF。

    fread函数

    #include <stdio.h>

    size_t fread(void *ptr, size_t size, size_t nmenb, FILE *stream);

    说明: ptr是读取的数据在内存中存放地址, nmenb 是要读取的数据单元个数。

    功能:从指定文件流中读取一段数据 。 返回值:实际读取到的数据单元个数。

    fwrite函数

    #include <stdio.h>

    size_t  fwrite(void *ptr, size_t size, size_t nmenb, FILE *stream);

    说明: ptr是读取的数据在内存中存放地址, nmenb 是要读取的数据单元个数。

    功能:从将指定的一段数据写入指定文件流。 返回值:实际读取到的数据单元个数。

    open函数

    #include <sys/types.h>

    #include <sys/stat.h>

    #include <fcntl.h>

    int open(const char *pathname, int flags, mode_t mode);

    O_RDONLY 以只读的形式打开文件,

    O_WRONLY 以只写的形式打开文件,

    O_RDWR 以可读写的形式打开文件;

    O_CREAT 如果被打开文件不存在,则自动建立文件,

    O_EXCL 与O_CREAT一起使用,若文件存在则报错;

    O_TRUNC 以可写方式打开时,清空文件内容。

    说明:pathname是要打开文件的路径,flags是标志位,mode用来指明文件的操作权限。

    功能:打开指定文件,返回文件标识符。 返回值:成功 文件标识符 错误 -1

    creat函数

    #include <sys/types.h>

    #include <sys/stat.h>

    #include <fcntl.h>

    int creat(const char *pathname, mode_t mode);

    说明: 相当于调用open()。

    功能:创建新文件 。

    返回值:运行成功返回文件标识符,失败返回0。

    mktemp函数

    #include <stdlib.h>

    int mktemp(char *template);

    说明:临时文件的文件名,最后六个字符必须为XXXXXX 。

    功能:创建临时内存文件 。

    返回值:运行成功返回文件标识符,失败返回0。

    close关闭文件

    #include <unistd.h>

    int close(int fd);

    read函数

    #include <unistd.h>

    ssize_t read(int fd, void *buf, size_t count);

    说明:fd是文件标识符,buf是内存中的数据缓冲区,count是要读取数据的大小 。

    功能:从指定的文件中读取数据 。

    返回值:运行成功返回读取数据的长度(多少个字节),失败返回-1。

    write函数

    #include <unistd.h>

    ssize_t write(int fd, void *buf, size_t count);

    说明:fd是文件标识符,buf是内存中的数据缓冲区,count是要读取数据的大小 。

    功能:将数据写入指定的文件中 。

    返回值:运行成功返回读取数据的数据,失败返回-1。

    lseek函数

    #include <sys/types.h>

    #include <unistd.h>

    off_t lseek(int fd, off_t offset, int whence);

    说明:fd是文件标识符,offset是移动的偏移量。

    Whence是移动的基准位置 。

    功能:修改文件的读写位置。

    返回值:运行成功返回读写指针后文件实际读写位置的绝对量,失败返回-1。

    fcntl函数

    #include <sys/types.h>

    #include <unistd.h>

    #include <fcntl.h>

    int fcntl(int fd, int cmd, struct flock *lock);

    说明:fd是文件标识符,cmd 是命令,lock记录锁的具体状态。

    功能:处理文件共享问题。 返回值:0 成功 -1 出错

    select函数

    #include <sys/types.h>

    #include <unistd.h>

    #include <sys/time.h>

    int select(int numfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout)

    说明:numfds需要检查的号码最高的文件描述符加1,

    readfds由select监视的读文件描述符集合,

    writefds由select监视的写文件描述符集合,

    errorfds由select监视的异常处理文件描述符集合,

    timeout:NULL 永远等待,知道扑捉到信号或者描述符已准备好为止,具体指若等待位timeout时间还没有文件描述符准备好,就立即返回,0 从不等待,测试所有指定的描述符并立即返回。 功能:处理I/O复用问题。 返回值: 成功 准备好的文件描述符 -1 出错

    pipe函数 #include <unistd.h>

    int pipe(int filedes[2]);

    说明:管道两端对应的文件标识符,fi

    ldes[0]为读端的标识符, fildes[1]为写端的标识符。

    功能:创建无名管道 。 返回值:运行成功返回0,失败返回-1。

    mkfifo函数

    #include <sys/types.h>

    #include <sys/stat.h>

    int mkfifo(const char *pathname, mode_t mode);

    说明:pathname是管道的文件名,mode是管道的权限。

    功能:创建有名管道,该管道被看作一个文件创建。

    返回值:运行成功返回0,失败返回-1。

  • 相关阅读:
    hdoj 5311 Hidden String(KMP)
    hdoj 1532 Drainage Ditches(最大网络流)
    ubuntu中php+mysql环境搭建
    android:clipToPadding 和 android:clipChildren
    Js实现动画框架
    JavaScript初步认识
    JavaScript鼠标进入与退出监听动画
    Android框架集合
    Android 6.0(Android M)动态授权
    Android应用申请ROOT权限
  • 原文地址:https://www.cnblogs.com/yuankaituo/p/4246732.html
Copyright © 2011-2022 走看看