linux下c语言编程istat
时间: 2023-11-21 19:15:10 浏览: 178
linux下c语言编程
Linux下没有istat函数,但可以使用fstat和stat函数来实现类似的功能。
fstat函数用于获取一个已经打开的文件的属性信息,而stat函数用于获取一个指定路径的文件的属性信息。因此,如果要实现类似istat的功能,可以先使用open函数打开文件,然后使用fstat函数获取文件属性信息。
```c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int fd;
struct stat buf;
if (argc != 2) {
fprintf(stderr, "Usage: %s <file>\n", argv[0]);
exit(EXIT_FAILURE);
}
fd = open(argv[1], O_RDONLY);
if (fd == -1) {
perror("open");
exit(EXIT_FAILURE);
}
if (fstat(fd, &buf) == -1) {
perror("fstat");
exit(EXIT_FAILURE);
}
printf("File type: ");
switch (buf.st_mode & S_IFMT) {
case S_IFBLK: printf("block device\n"); break;
case S_IFCHR: printf("character device\n"); break;
case S_IFDIR: printf("directory\n"); break;
case S_IFIFO: printf("FIFO/pipe\n"); break;
case S_IFLNK: printf("symlink\n"); break;
case S_IFREG: printf("regular file\n"); break;
case S_IFSOCK: printf("socket\n"); break;
default: printf("unknown?\n"); break;
}
printf("File size: %ld bytes\n", buf.st_size);
printf("Number of blocks: %ld\n", buf.st_blocks);
printf("Last status change time: %s", ctime(&buf.st_ctime));
printf("Last file access time: %s", ctime(&buf.st_atime));
printf("Last file modification time: %s", ctime(&buf.st_mtime));
close(fd);
exit(EXIT_SUCCESS);
}
```
在这个示例程序中,我们使用open函数打开了一个指定的文件,然后使用fstat函数获取文件属性信息,并将这些信息输出到屏幕上。请注意,我们使用了ctime函数将时间戳转换为可读的时间格式。
使用这个程序时,可以通过命令行参数指定要获取属性信息的文件,例如:
```
$ ./istat /etc/passwd
```
这将会输出/etc/passwd文件的属性信息。
阅读全文