unistd.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #pragma once
  2. #include <stdint.h>
  3. #include <libc/sys/types.h>
  4. /**
  5. * @brief 关闭文件接口
  6. *
  7. * @param fd 文件描述符
  8. * @return int
  9. */
  10. int close(int fd);
  11. /**
  12. * @brief 从文件读取数据的接口
  13. *
  14. * @param fd 文件描述符
  15. * @param buf 缓冲区
  16. * @param count 待读取数据的字节数
  17. * @return ssize_t 成功读取的字节数
  18. */
  19. ssize_t read(int fd, void *buf, size_t count);
  20. /**
  21. * @brief 向文件写入数据的接口
  22. *
  23. * @param fd 文件描述符
  24. * @param buf 缓冲区
  25. * @param count 待写入数据的字节数
  26. * @return ssize_t 成功写入的字节数
  27. */
  28. ssize_t write(int fd, void const *buf, size_t count);
  29. /**
  30. * @brief 调整文件的访问位置
  31. *
  32. * @param fd 文件描述符号
  33. * @param offset 偏移量
  34. * @param whence 调整模式
  35. * @return uint64_t 调整结束后的文件访问位置
  36. */
  37. off_t lseek(int fd, off_t offset, int whence);
  38. /**
  39. * @brief fork当前进程
  40. *
  41. * @return pid_t
  42. */
  43. pid_t fork(void);
  44. /**
  45. * @brief fork当前进程,但是与父进程共享VM、flags、fd
  46. *
  47. * @return pid_t
  48. */
  49. pid_t vfork(void);
  50. /**
  51. * @brief 将堆内存调整为end_brk
  52. *
  53. * @param end_brk 新的堆区域的结束地址
  54. * end_brk=-1 ===> 返回堆区域的起始地址
  55. * end_brk=-2 ===> 返回堆区域的结束地址
  56. * @return uint64_t 错误码
  57. *
  58. */
  59. uint64_t brk(uint64_t end_brk);
  60. /**
  61. * @brief 将堆内存空间加上offset(注意,该系统调用只应在普通进程中调用,而不能是内核线程)
  62. *
  63. * @param increment offset偏移量
  64. * @return uint64_t the previous program break
  65. */
  66. void *sbrk(int64_t increment);
  67. /**
  68. * @brief 切换当前工作目录
  69. *
  70. * @param dest_path 目标目录
  71. * @return int64_t 成功:0,失败:负值(错误码)
  72. */
  73. int64_t chdir(char *dest_path);