1 #pragma once 2 #include <stdint.h> 3 #include <sys/types.h> 4 5 #if defined(__cplusplus) 6 extern "C" { 7 #endif 8 9 /** 10 * @brief 关闭文件接口 11 * 12 * @param fd 文件描述符 13 * @return int 14 */ 15 int close(int fd); 16 17 /** 18 * @brief 从文件读取数据的接口 19 * 20 * @param fd 文件描述符 21 * @param buf 缓冲区 22 * @param count 待读取数据的字节数 23 * @return ssize_t 成功读取的字节数 24 */ 25 ssize_t read(int fd, void *buf, size_t count); 26 27 /** 28 * @brief 向文件写入数据的接口 29 * 30 * @param fd 文件描述符 31 * @param buf 缓冲区 32 * @param count 待写入数据的字节数 33 * @return ssize_t 成功写入的字节数 34 */ 35 ssize_t write(int fd, void const *buf, size_t count); 36 37 /** 38 * @brief 调整文件的访问位置 39 * 40 * @param fd 文件描述符号 41 * @param offset 偏移量 42 * @param whence 调整模式 43 * @return uint64_t 调整结束后的文件访问位置 44 */ 45 off_t lseek(int fd, off_t offset, int whence); 46 47 /** 48 * @brief fork当前进程 49 * 50 * @return pid_t 51 */ 52 pid_t fork(void); 53 54 /** 55 * @brief fork当前进程,但是与父进程共享VM、flags、fd 56 * 57 * @return pid_t 58 */ 59 pid_t vfork(void); 60 61 /** 62 * @brief 将堆内存调整为end_brk 63 * 64 * @param end_brk 新的堆区域的结束地址 65 * end_brk=-1 ===> 返回堆区域的起始地址 66 * end_brk=-2 ===> 返回堆区域的结束地址 67 * @return uint64_t 错误码 68 * 69 */ 70 uint64_t brk(uint64_t end_brk); 71 72 /** 73 * @brief 将堆内存空间加上offset(注意,该系统调用只应在普通进程中调用,而不能是内核线程) 74 * 75 * @param increment offset偏移量 76 * @return uint64_t the previous program break 77 */ 78 void *sbrk(int64_t increment); 79 80 /** 81 * @brief 切换当前工作目录 82 * 83 * @param dest_path 目标目录 84 * @return int64_t 成功:0,失败:负值(错误码) 85 */ 86 int64_t chdir(char *dest_path); 87 88 /** 89 * @brief 执行新的程序 90 * 91 * @param path 文件路径 92 * @param argv 参数列表 93 * @return int 94 */ 95 int execv(const char *path, char *const argv[]); 96 97 /** 98 * @brief 睡眠指定时间 99 * 100 * @param usec 微秒 101 * @return int 102 */ 103 extern int usleep(useconds_t usec); 104 105 /** 106 * @brief 删除文件夹 107 * 108 * @param path 绝对路径 109 * @return int 错误码 110 */ 111 int rmdir(const char *path); 112 113 int rm(const char * path); 114 115 /** 116 * @brief 交换n字节 117 * @param src 源地址 118 * @param dest 目的地址 119 * @param nbytes 交换字节数 120 */ 121 void swab(void *restrict src, void *restrict dest, ssize_t nbytes); 122 123 pid_t getpid(void); 124 125 #if defined(__cplusplus) 126 } /* extern "C" */ 127 #endif 128