stat 函数
1 1 #include <sys/stat.h> 2 2 #include <unistd.h> 3 3 #include <stdio.h> 4 4 int main() 5 5 { 6 6 struct stat buf; 7 7 stat("1.c", &buf); 8 8 printf("1.c file size = %d\n",(int)buf.st_size); 9 9 return 0; 10 10 }
文件执行结果1.c file size = 868 struct stat { dev_t st_dev; //文件的设备编号 ino_t st_ino; //节点 mode_t st_mode; //文件的类型和存取的权限 nlink_t st_nlink; //连到该文件的硬连接数目,刚建立的文件值为1 uid_t st_uid; //用户ID gid_t st_gid; //组ID dev_t st_rdev; //(设备类型)若此文件为设备文件,则为其设备编号 off_t st_size; //文件字节数(文件大小) unsigned long st_blksize; //块大小(文件系统的I/O 缓冲区大小) unsigned long st_blocks; //块数 time_t st_atime; //最后一次访问时间 time_t st_mtime; //最后一次修改时间 time_t st_ctime; //最后一次改变时间(指属性)}; 2. fstat 函数int fstat(int fd,struct stat *sbuf); //fd是打开的文件描述符,sbuf是存储stat结构体信息的 3. lstat 函数 // lstat类似于stat,但是命名的文件是一个符号链接时,lstat返回的是该链接符号的有个信息,而不是由该符号链接引用的文件信息! 4. dup和dup2函数
1 #include <unistd.h> 2 #include <sys/stat.h> 3 #include <fcntl.h> 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <string.h> 7 8 int main(void) 9 { 10 int fd, save_fd; 11 char msg[] = "This is a test\n"; 12 13 fd = open("somefile", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR); 14 if(fd<0) 15 { 16 perror("open"); 17 exit(1); 18 } 19 save_fd = dup(STDOUT_FILENO);//记录标准输出 20 dup2(fd, STDOUT_FILENO);//标准输出重定向到fd 21 close(fd); 22 write(STDOUT_FILENO, msg, strlen(msg));//标准输出输出到fd指向的文件 23 dup2(save_fd, STDOUT_FILENO);//标准重定向返回来 24 write(STDOUT_FILENO, msg, strlen(msg));//写入缓冲区,此时从屏幕输出 25 close(save_fd); 26 return 0; 27 }
5.symlink 函数
//用来创建符号链接的
1 #include<unistd.h> 2 int symlink(const char *actualpath,const char *sympath);
时间: 2024-10-24 23:53:43