文件的属性操作-Linux C

1.

更改文件权限

#include<sys/types.h>
#include<sys/stat.h>
int chmod(const char *pathname,mode_t mode);
int fchmod(int fd,mode_t mode);

成功返回0,出错返回-1

fchmod在已经打开的文件上进行操作。

在Linux Bash Shell下也可使用chmod命令直接更改

2.

更改文件所有者

#include<sys/types.h>
#include<unistd.h>
int chown(const char *pathname,uid_t owner,gid_t gruop);
int fchown(int fd,uid_t owner,gid_t group);
int lchown(const char *pathname,uid_t owner,gid_t owner);

成功返回0,出错返回-1

owner和group表示要赋予该文件的新所有者标识号和组标识号

fchown修改已经打开的文件

lchown修改的是链接符号文件,此时修改的是符号链接文件的所有者而不是被链接文件的所有属性

3.

重命名文件或目录

#include<stdio.h>
int rename(const char *oldname,const char *newname)

成功返回0,出错返回-1

只有newname文件夹为空的时候才会被删除并将oldname重命名为name,其余和一般重命名限制一样。

4.

修改文件长度

#include<sys/types.h>
#include<unistd.h>
int truncate(const char *pathname,off_t len);
int ftruncate(int fd,off_t len);

5.

文件信息

#include<sys/types.h>
#include<sys/stat.h>

int stat(const char *pathname,struct stat *sbuf);
int fstat(int fd,struct stat *sbuf);  
int lstat(const char *pathname,struct stat *sbuf);

fstat针对已经打开的文件,lstat针对链接符合文件本身

6.

UNIX/LInux基本系统数据类型

caddr_t 核心地址。
clock_t 表示系统时间(以时钟周期为单位)。
comp_t 压缩的时钟滴答。
dev_t 用于设备号。
fd_set 文件描述集。
fpos_t 文件位置。
gid_t 数组值ID。
ino_t i节点编号。
off_t 用于文件大小和偏移量。
mode_t 文件类型,文件创建模式。
pid_t 进程ID和进程组ID
ptrdiff_t 是一种带符号整型,用于对两个指针执行减法运算后所得的结果。
rlim_t 资源限制;
size_t 反映内存中对象的大小(以字节为单位)。
ssize_t 供返回字节计数或错误提示的函数使用。
time_t 以秒为单位计时。
uid_t 数值用户ID。
wchar_t 能表示所有不同的字符码。
所有这些类型在 ILP32 编译环境中保持为 32 位值,并会在 LP64 编译环境中增长为 64 位值。

-来自百度百科

stat结构体

struct stat{
    mode_t  st_mode;//文件对应的模式,文件,目录等
    ino_t  st_ino;//i-node节点号
    dev_t  st_dev;//设备号码
    dev_t  st_rdev;//特殊设备号码
    nlink_t  st_nlink;//文件的连接数
    uid_t  st_uid;//文件所有者
    gid_t  st_gid;//文件所有者对应的组
    off_t  st_size;//普通文件,对应的文件字节数
    time_t  st_atime;//文件最后被访问的时间
    time_t  st_mtime;//文件内容最后被修改的时间
    time_t  st_ctime;//文件状态(属性)改变时间
    blksize_t  st_blksize;//文件内容对应的块大小
    blkcnt_t  st_blocks;//文件内容对应的块数量
}

-来自百度百科

7.

复制文件描述符

#include<unistd.h>
int dup(int fd);
int dup2(int fd,int fd2);

dup2的fd2表示自定义要复制的新文件描述符,若已存在,则关闭再重新打开完成复制

8.

#include<sys/types.h>
#include<unistd.h>
#include<fcntl.h>
int fcntl(int fd,int cmd);
int fcntl(int fd,int cmd,long arg);
cmd argument:
F_DUPFD
用来查找大于或等于参数arg的最小且仍未使用的文件描述词,并且复制参数fd的文件描述词。执行成功则返回新复制的文件描述词。新描述符与fd共享同一文件表项,但是新描述符有它自己的一套文件描述符标志,其中FD_CLOEXEC文件描述符标志被清除。请参考dup2()。
F_GETFD
取得close-on-exec旗标。若此旗标的FD_CLOEXEC位为0,代表在调用exec()相关函数时文件将不会关闭。
F_SETFD
设置close-on-exec 旗标。该旗标以参数arg 的FD_CLOEXEC位决定。
F_GETFL
取得文件描述词状态旗标,此旗标为open()的参数flags。
F_SETFL
设置文件描述词状态旗标,参数arg为新旗标,但只允许O_APPEND、O_NONBLOCK和O_ASYNC位的改变,其他位的改变将不受影响。
F_GETLK
取得文件锁定的状态。
F_SETLK
设置文件锁定的状态。此时flcok 结构的l_type 值必须是F_RDLCK、F_WRLCK或F_UNLCK。如果无法建立锁定,则返回-1,错误代码为EACCES 或EAGAIN。
F_SETLKW
与F_SETLK 作用相同,但是无法建立锁定时,此调用会一直等到锁定动作成功为止。若在等待锁定的过程中被信号中断时,会立即返回-1,错误代码为EINTR。

9.

缓存与文件同步机制

#include<unistd.h>
void sync(void);
int fsync(int fd);

前者调用自动刷新,将队列中的所有缓存写入对应的文件,系统update一般每30s调用一次此函数。

后者指定要写入的文件,且会立即写入。

时间: 2024-11-04 03:25:50

文件的属性操作-Linux C的相关文章

#Linux学习笔记# Linux文件的属性以及权限说明

1. Linux文件的属性 关于Linux文件的属性的说明和设置请参考鸟叔Linux私房菜:Linux 的文件权限与目录配置 2. 目录和文件的权限意义 在Linux系统中,每个文件都有三种身份的权限配置,而每个身份都有三种权限(rwx).这三种权限对于普通的文件很好理解,如下表所示, 表格 1 普通文件的rwx权限位意义 权限 说明 r 文件内容可读 w 文件内容可修改 x 文件可执行 在Window系统中,文件是否可执行是通过文件扩展名来进行识别,例如.exe或.bat等.而在Linux系统

Linux学习笔记(十一)--命令学习(文件权限属性)

在进行新内容学习前,我们先把上面的内容简单的回顾下: 绝对路径:『一定由根目录 / 写起』:相对路径:『不是由 / 写起』 特殊目录有:., .., -, ~, ~account需要注意: 与目录相关的命令有:cd, mkdir, rmdir, pwd 等重要命令: rmdir 仅能删除空目录,要删除非空目录需使用『 rm -r 』命令: ls 可以检视文件的属性,尤其 -d, -a, -l 等选项特别重要! 文件的复制.删除.移动可以分别使用:cp, rm , mv等命令来操作: 检查文件的内

Linux下权限的修改-JDK的配置-文件的常见操作

一.   linux下设置777权限和用户权限 设置www目录的所有文件可写777 sudo chmod 777 -R www  (这里-R是继承) 设置www目录下的所有文件权限为user所有 sudo chown -hR user www exit 二. 用户不在sudoers中处理办法: <方法一> 1.切换到超级用户root    $su root 2.查看/etc/sudoers权限,可以看到当前权限为440    $ ls -all /etc/sudoers    -r--r---

linux常用文件I/O操作之文件共享的实现方式

 1.文件共享的三种实现方式  1.什么是文件共享:    (1)文件共享就是同一个文件(同一个文件指的是同一个inode,同一个pathname)被多个独立的读写体(几乎可以理解为多个文件描述符)去同时(一个打开尚未关闭的同时另一个去操作)操作. (2)文件共享的意义有很多:譬如我们可以通过文件共享来实现多线程同时操作同一个大文件,以减少文件读写时间,提升效率.     2.文件共享的核心就是怎么弄出来多个文件描述符指向同一个文件.     3.常见的三种文件共享情况: 1.是同一个进程中多次

Linux 文件类型及操作

一.  文件类型 1.Linux文件类型如下图所示: 2.Linux文件类型有许多种,不同的文件类型代表特殊意义,使用以下命令可以查看文件类型: [[email protected] ~]# ls  -l      #第一位字符代表文件类型 total 108 - rw-------. 1 root root  1555 Jul 13 17:38 anaconda-ks.cfg drwxr-xr-x. 2 root root  4096 Jul 13 10:24 Desktop [[email 

Linux文件时间属性

Linux文件时间属性 -by 石锅拌饭 写这篇小文章的缘由是之前做过一个项目,须要定期将文件转走,或许专业点的名词叫rollover.那么这就须要推断一个文件是否到了转走的时间,从而就须要知道文件的创建时间. Linux文件分为状态改动时间ctime.改动时间mtime以及訪问时间atime.那么它们是怎么变化的呢?须要注意这个ctime可不是创建时间,是Change Time的缩写,改动时间那就是文件改动的时间Modify Time.訪问时间就是文件读取的时间Access Time. 事实上

【linux之文件查看,操作】

一.shell如何处理命令 1.shell会根据在命令中出现的空格字符,将命令划分为多个部分 2.判断第一个字段是内部命令还是外部命令 内部命令:内置于shell的命令(shell builtin) 外部命令:通过安装其他应用程序或服务而安装来的命令 路径:为了查找或定位某个文件所必需经过的目录的层次结构 相对路径:从工作目录开始查找的路径 . 当前的工作目录 .. 当前的工作目录的父目录 根的父目录还是根 绝对路径:从根(/)开始查找的路径 变量:内存空间 变量值:存放在内存空间中的数据 空变

linux中文件和文件夹的操作

一.文件操作 1.创建( > touch ) > 2.txt 在当前路径创建文件2.txt,(如果2.txt本来就存在,2.txt的内容会被清除) touch 3.log 在当前路径创建文件3.log 2.删除( rm ) rm: -i 删除前逐一询问确认. -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认. -r 将目录及以下之档案亦逐一删除.需要提醒的是:使用这个rm -rf的时候一定要格外小心,linux没有回收站的 rm  2.txt 删除当前路径中的文件2.txt,需确认. r

如何在linux系统下对文件夹名有空格的文件夹进行操作

http://www.2cto.com/os/201409/335119.html 在Windows操作系统中可以轻易地创建\移动\删除文件夹名带有空格的文件夹, 而在linux则需要进行一些特殊的处理才能实现以上功能. (1)创建文件夹 mkdir my\ first 这条命令创建了文件夹"my first",文件夹名中my和first之间有一个空格,在命令行中需要 添加一个"\"符号和一个空格的组合 mkdir my\ \ tow 这条命令创建了文件夹"