apue 04.pdf
S _ I S L N K ( )
S _ I S S O C K ( )
符号连接( P O S I X . 1 或 S V R 4无此类型) 套接字( P O S I X . 1 或 S V R 4无此类型)
为了跨平台,代码写成#ifdef这种
#include "apue.h"
int
main(int argc, char *argv[])
{
int i;
struct stat buf;
char *ptr;
for (i = 1; i < argc; i++) {
printf("%s: ", argv[i]);
if (lstat(argv[i], &buf) < 0) {
err_ret("lstat error");
continue;
}
if (S_ISREG(buf.st_mode))
ptr = "regular";
else if (S_ISDIR(buf.st_mode))
ptr = "directory";
else if (S_ISCHR(buf.st_mode))
ptr = "character special";
else if (S_ISBLK(buf.st_mode))
ptr = "block special";
else if (S_ISFIFO(buf.st_mode))
ptr = "fifo";
#ifdef S_ISLNK
else if (S_ISLNK(buf.st_mode))
ptr = "symbolic link";
#endif
#ifdef S_ISSOCK
else if (S_ISSOCK(buf.st_mode))
ptr = "socket";
#endif
else
ptr = "** unknown mode **";
printf("%s\n", ptr);
}
exit(0);
}
这样定义的
#define S_ISDIR (mode) (((mode) & S_IFMT) == S_IFDIR)
分享到:
相关推荐
stat系统调用系列包括了fstat、stat和lstat,它们都是用来返回“相关文件状态信息”的,三者的不同之处在于设定源文件的方式不同。
简单易懂哦!... struct stat buf; struct passwd *usr; struct group *grp; int rt; struct tm *ttime; char linkname[64]; rt=lstat(name,&buf;); //调用lstat 获取文件属性,并对返回值做错
这意味着如果你试图获取一个符号链接的目标信息,`fs.lstat`会返回链接自身的信息,而不是链接所指向的文件或目录的属性。 ### 方法说明 `fs.lstat`方法的使用非常简单,其基本语法如下: ```javascript fs.lstat...
文件夹 遍历的代码 int isDir(const char* path) { struct stat st; lstat(path, &st;); return S_ISDIR(st.st_mode);
代码如下:#include<sys>#include<unistd>int is_dir(char *path){ struct stat buf;... 您可能感兴趣的文章:VC++获得当前进程运行目录的方法C++递归删除一个目录实例C++检查某个文件或目录是否存在的函数C/
- 参数:`pathname`是文件路径,`fd`是文件描述符,`statbuf`是一个`struct stat`类型的指针,用于存储文件信息。 - 返回值:成功返回0,失败返回-1并设置错误号。 - `struct stat`成员: - `st_size`:文件大小...
成功执行返回0,失败返回-1,并设置`errno`。 ### 八、总结 本文详细介绍了Linux C中一些常用的文件I/O函数,包括文件的打开/创建、读取、写入、关闭以及移动文件读/写指针等操作。通过这些函数,我们可以实现对...
操作系统实现cp命令是计算机科学领域中的一种基本操作,cp命令是Linux操作系统中的一种基本命令,用于复制文件或目录。下面我们将对操作系统实现cp命令的知识点进行总结。 实验目的 操作系统实现cp命令的实验目的...
请注意,文件大小的单位转换通常基于1024进制(1KB = 1024B,1MB = 1024KB,以此类推),但在实际存储设备中,制造商通常使用1000进制(1KB = 1000B,1MB = 1000KB,等)。因此,在实际应用中,你可能需要根据实际...
`stat`函数接收一个路径名,返回该文件的详细信息;`fstat`函数通过文件描述符获取信息;`lstat`函数与`stat`类似,但在处理符号链接时,它返回链接本身的信息而非链接指向的文件。返回值为0表示成功,-1表示失败。...
在这个简单的程序中,`getcwd()`函数接收两个参数:一个用于存放路径的缓冲区(在这里传入NULL,表示让函数自行分配内存),以及缓冲区的大小(传入0,表示自动计算所需大小)。如果成功,它会返回一个指向路径字符...
与`stat()`不同的是,`lstat()`会处理符号链接,如果指定的路径是一个链接,它会返回链接指向的文件的信息,而不是链接本身。 "experiment_with_kill.c"可能涉及到`kill()`系统调用,这是用于发送信号到进程的常用...
0.00632 18 2.31 0 0.538 6.575 65.2 4.09 1 296 15.3 396.9 4.98 24 0.02731 0 7.07 0 0.469 6.421 78.9 4.9671 2 242 17.8 396.9 9.14 21.6 0.02729 0 7.07 0 0.469 7.185 61.1 4.9671 2 242 17.8 392.83 4.03 ...
JavaScript(Node.js)中,可以使用`fs`模块的`stat()`或`lstat()`方法,然后检查返回的`Stat`对象的`isDirectory()`属性: ```javascript const fs = require('fs'); async function isDirectory(path) { const ...
- 使用`lstat()`或`stat()`函数获取文件的属性信息,并存入`struct stat`结构体。 - 利用`S_IS...`宏判断文件类型。 ##### 3.3 心得体会 通过本项目的学习与实践,不仅可以深入了解`ls`命令的工作原理,还能掌握...
**Socket** 是一种特殊的文件描述符,它允许不同计算机之间进行双向通信。在 Linux 下,Socket 的创建、绑定和监听主要通过以下步骤: 1. **创建 Socket**:通过 `socket()` 函数创建一个 Socket 文件描述符。 2. *...