From 560a59582315bebb345dfdc8a9baa098acaf2261 Mon Sep 17 00:00:00 2001 From: flykhan Date: Wed, 16 Aug 2023 12:04:51 +0800 Subject: [PATCH] =?UTF-8?q?readme=20=E7=B3=BB=E7=BB=9F=E8=B0=83=E7=94=A8,?= =?UTF-8?q?=20=E8=BF=9B=E7=A8=8B(=E4=B8=8A)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5f11d3c..91bc87a 100644 --- a/README.md +++ b/README.md @@ -198,18 +198,44 @@ ssize_t read(int fd, void *addr, size_t count); #include -int remove(const char *pathname); +int remove(const char *pathname); 【库函数】 ``` ### 2.2 fcntl 函数 -``` +```c // 修改标准的输入设备的标识为非阻塞 int flags = fcntl(STDIN_FILENO, F_GETFL); flags |= O_NONBLOCK; fcntl(STDIN_FILENO, F_SETFL, flags); ``` +取消非阻塞 + +```c +int flags = fcntl(STDIN_FILENO, F_GETFL); +flags ^= O_NONBLOCK; +fcntl(STDIN_FILENO, F_SETFL, flags); +``` + +获取文件的类型(文件、目录) + +``` +struct stat info; + +stat(char *path, &info); + +info.st_mode & S_IFDIR 是否为目录的验证 +info.st_mode & S_IFREG 是否为文件的验证 +``` + +打开目录和读取目录: + +``` +dir *opendir(char *path) +dirent *readdir(dir *) +``` + ### 2.3 进程的定义 ``` @@ -269,5 +295,5 @@ pid_t waitpid(pid_t pid, int *status, int options) ``` WIFEXITED(status) 如果子进程是正常终止的,取出的字段值非零 -WEXITSTATUS(status) 返回子进程的退出状态,退出状态保存在 status 变量的 8~16 位。在用此宏前应先用宏 WIFEXITED 判断子进程是否正常退出,正常退出才可以使用此宏。 +WEXITSTATUS(status) 返回子进程的退出状态,退出状态保存在 status 变量的 8~16 位(低位的第2个字节)。在用此宏前应先用宏 WIFEXITED 判断子进程是否正常退出,正常退出才可以使用此宏。 ```