• 系统函数


    文件操作函数
    1.open
    2.read
    3.write
    4.close
    5.lseek 文件拓展,重置指针位置
    6.stat fileName 查询文件的属性信息【对应的命令】
    stat函数,特性--能够穿透(跟踪)符号链接【类似vi编辑器】
    lstat函数,特性--不穿透(跟踪)符号链接【类似ls -l 或rm】
    access函数,测试文件权限
    truncate 指定文件大小
    unlink 关闭文件时删除临时文件

       #include <stdio.h>
        #include <stdlib.h>
        #include <sys/types.h>
        #include <sys/stat.h>
        #include <unistd.h>
        #include <fcntl.h>
        
        int main()
        {    //新建一个临时文件并打开
            int fd = open("tempfile", O_CREAT | O_RDWR, 0664);
            if(fd == -1) {
                perror("open");
                error(1);
            }
            
            //删除临时file,在文件被关闭时删除
            int ret = unlink("tempfile");
            
            //写文件
            write(fd, "hello
    ", 6);
            
            //重置文件指针
            lseek(fd, 0, SEEK_SET);
            //read file
            char buf[24] = {0};
            int len = read(fd, buf, sizeof(buf));
            
            //讲读出来的内容写到屏幕上
            write(1, buf, len);
            
            close(fd);
            return 0;
        }

    目录操作函数:
    man 2 函数名 【查询文档】
    chdir 修改当前进程的路径
    getcwd 获取当前进程的工作目录

    man 3 函数名 【查询文档】
    dup 返回的是文件描述表中没有被占用的最小的文件描述符,新旧两个文件描述符都可以访问同一个文件
    dup2(old, new) 如果old和new是两个不同的文件描述符,如果new是一个被打开的文件描述符,在拷贝之前先关掉new,然后new指向old对应的文件
    如果old和new是同一个文件描述符,不会关掉new,直接返回old

    fcntl 改变已经打开的文件属性

        #include <stdio.h>
        #include <stdlib.h>
        #include <unistd.h>
        #include <fcntl.h>
        #include <string.h>
        
        int main(void)
        {
            int fd;
            int flag;
        
            //测试字符串
            char *p = "pppppppppppppppppppp
    ";
            char *q = "qqqqqqqqqqqqqqqqqqqqq
    ";
            
            //只写的方式打开文件
            fd = open("test.txt", O_WRONLY);
            if(fd == -1) {
                perror("open");
                exit(1);
            }
            
            //输入新的内容,该部分会覆盖原来旧的内容
            if(write(fd, p, strlen(p)) == -1) {
                perror("write p");
                exit(1);    
            }
            
            //使用F_GETFL命令得到文件状态标志
            flag = fcntl(fd, F_GETFL, 0);
            if(flag == -1){
                perror("fcntl");
                exit(1);
            }
            
            //将文件状态标志添加“追加写选项”
            flag |= O_APPEND;
            //将文件状态修改为追加写
            if(fcntl(fd, F_SETFL, flag) == -1) {
                perror("fcntl -- append write");
                exit(1);
            }
            
            //再次输入新内容,该内容会追加到旧内容的后面
            if(write(fd, q, strlen(q)) == -1) {
                perror("write q again");
                exit(1);    
            }
            
            //关闭文件
            close(fd);
        }

    目录操作相关函数
    opendir readdir closedir

  • 相关阅读:
    jdk源码调试进去形参没有值
    proxy 简化版本
    spering getBean(),IOC
    彻底清除挖矿程序
    Kworkerd恶意挖矿分析
    怎么让 Android 程序一直后台运行,像 QQ 一样不被杀死
    linux 系统下使用socket进行本地进程间通信
    linux i2c 的通信函数i2c_transfer在什么情况下出现错误
    Java Socket网络编程常见异常(转)
    踩过的坑系列之InputStream.read(byte[])方法
  • 原文地址:https://www.cnblogs.com/zheaven/p/14140091.html
Copyright © 2020-2023  润新知