摘要: ### dup 在Linux中,dup函数用于复制一个文件描述符。具体而言,dup函数会复制参数fd所指向的文件描述符,并返回一个新的文件描述符,新的文件描述符和原文件描述符指向同一个文件表项,也就是说,它们共享同一文件偏移量和文件状态标志等信息。新的文件描述符和原文件描述符的值可能不同。 ```c 阅读全文
posted @ 2022-10-14 22:15 言叶以上 阅读(104) 评论(0) 推荐(0) 编辑
摘要: `fcntl`是Linux中的一个系统调用,用于对文件描述符进行控制操作。其主要功能包括文件复制、文件描述符的获取和设置、非阻塞I/O等操作。 ```c #include #include int fcntl(int fd, int cmd, .../* arg */); // arg 参数: fd 阅读全文
posted @ 2022-10-14 22:15 言叶以上 阅读(43) 评论(0) 推荐(0) 编辑
摘要: #include <sys/types.h> #include <dirent.h> DIR *opendir(const char *name); 作用: 打开一个目录 参数: - name: 需要打开的目录流 返回值: DIR* 类型, 目录流 NULL 错误 #include <dirent. 阅读全文
posted @ 2022-10-14 22:14 言叶以上 阅读(43) 评论(0) 推荐(0) 编辑
摘要: #include <sys/stat.h> #include <sys/types.h> int mkdir(const char *pathname, mode_t mode); 作用: 创建一个目录 参数: pathname: 创建的目录的路径 mode: 权限,八进制的数 返回值: 成功返回0 阅读全文
posted @ 2022-10-14 22:13 言叶以上 阅读(42) 评论(0) 推荐(0) 编辑
摘要: #include <unistd.h> int chdir(const char *path); 作用:修改进程的工作目录 比如在/home/nowcoder 启动了一个可执行程序a.out, 进程的工作目录就是 /home/nowcoder 参数: path: 需要修改的工作目录 返回值: 0 s 阅读全文
posted @ 2022-10-14 22:12 言叶以上 阅读(58) 评论(0) 推荐(0) 编辑
摘要: `rename()` 函数用于重命名文件或将文件移动到另一个目录。 ```c #include int rename(const char *oldname, const char *newname); 作用:重命名文件或文件夹 返回值:执行成功则返回0,失败返回-1,错误原因存于errno ``` 阅读全文
posted @ 2022-10-14 22:12 言叶以上 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 在Linux中,`truncate`函数可以将一个文件截断或扩展为指定的大小。具体来说,它可以根据文件描述符或文件名截断或扩展一个文件,将其大小设置为指定的字节数。如果文件原本比指定的大小小,那么它将被扩展,如果文件比指定的大小大,那么它将被截断。 ```c #include #include in 阅读全文
posted @ 2022-10-14 22:11 言叶以上 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 在 Linux 中,`chmod` 函数用于更改文件或目录的访问权限。 ``` #include int chmod(const char *pathname, mode_t mode); 修改文件的权限 参数: - pathname: 需要修改文件的路径 - mode: 需要修改的权限值,八进制的 阅读全文
posted @ 2022-10-14 22:10 言叶以上 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 在Linux中,`access()`函数用于检查当前进程是否有权限读、写或执行指定的文件或目录。 ```c #include int access(const char *pathname, int mode); 作用:判断某个文件是否有某个权限,或者判断文件是否存在 参数: - pathname: 阅读全文
posted @ 2022-10-14 22:09 言叶以上 阅读(47) 评论(0) 推荐(0) 编辑
摘要: //-rw-rw-r-- 1 username groupname 112 Wed Sep 14 22:08:30 2022 hello.txt #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <uni 阅读全文
posted @ 2022-10-14 22:08 言叶以上 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 在Linux中,stat函数用于获取文件的属性信息,包括文件大小、创建时间、修改时间等。 头文件: ```c #include #include #include ``` 函数: ```c int stat(const char *pathname, struct stat *statbuf); 作 阅读全文
posted @ 2022-10-14 22:07 言叶以上 阅读(47) 评论(0) 推荐(0) 编辑
摘要: #include <sys/types.h> #include <unistd.h> off_t lseek(int fd, off_t offset, int whence); 参数: fd: 文件描述符,通过open得到,用来操作某个文件 offset: 偏移量 whence: 指定的标记 SE 阅读全文
posted @ 2022-10-14 22:05 言叶以上 阅读(14) 评论(0) 推荐(0) 编辑
摘要: read 和 write函数 #include <unistd.h> ssize_t read(int fd, void *buf, size_t count); 参数: fd: 文件描述符, open得到的, 用来操作某个文件 buf: 要读取数据存放的地方, 数组的地址 count: 指定的数组 阅读全文
posted @ 2022-10-14 22:04 言叶以上 阅读(26) 评论(0) 推荐(0) 编辑
摘要: open #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char* pathname, int flags); 打开文件 作用: 打开一个已经存在的文件 flags 文件操作权限: O_R 阅读全文
posted @ 2022-10-14 22:04 言叶以上 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 首先 需要加入调试选项 -g, 在可执行文件中加入源代码信息, 打开所有警告-Wall gcc -g -Wall program.c -o program 启动: gdb 可执行程序 退出: quit 设置参数: set args 10 20 获取参数: show args 查看代码: list/l 阅读全文
posted @ 2022-10-14 22:04 言叶以上 阅读(24) 评论(0) 推荐(0) 编辑
摘要: - 文件命名: makefile 或 Makefile - 规则: - 一个Makefile文件中可以有一个或多个规则 目标 ...: 依赖 ... ​ 命令(shell命令) ​ ... - 目标: 最终生成的文件 - 依赖: 生成目标所需要的文件或者目标 - 命令: 通过执行命令对依赖操作生成目 阅读全文
posted @ 2022-10-14 22:04 言叶以上 阅读(13) 评论(0) 推荐(0) 编辑
摘要: ### 库 - 简单的看作可以直接拿来使用的代码仓库 - 静态库在程序的链接阶段被复制到了程序中 - 动态库在链接阶段没有被复制到程序中, 而是程序在运行时由系统动态加载到内存中供程序使用 #### 静态库优缺点 优点: - 静态库被打包到应用程序中加载速度快 - 发布程序无需提供静态库,移植方便 阅读全文
posted @ 2022-10-14 22:02 言叶以上 阅读(15) 评论(0) 推荐(0) 编辑
摘要: ### 动态库制作 ![](https://img2022.cnblogs.com/blog/894919/202210/894919-20221014220216977-863563310.png) - 命名规则 - Linux: libxxx.so - lib: 前缀 - xxx: 库的名字 - 阅读全文
posted @ 2022-10-14 22:02 言叶以上 阅读(18) 评论(0) 推荐(0) 编辑
摘要: ### 简介 如何理解系统编程? 1. 分析程序 2. 学习系统调用 3. 编程实现 #### 内核提供的系统资源与服务 - 处理器(Processor) 内核安排一个程序何时开始、暂停、恢复、终止 - 输入输出(I/O) 程序中的所有输入输出数据必须流经内核,保证了正确性、有效性、安全性 - 进程 阅读全文
posted @ 2022-10-14 21:59 言叶以上 阅读(34) 评论(0) 推荐(0) 编辑