文件属性及系统调用(C语言)

image

stat()/fstat()/lstat()

功能

获取文件状态

头文件

#inlcude<sys/types.h>

#include<sys/stat.h>

#include<unistd.h>

函数原型

int stat(const char file_name,struct statbuf);

int fstat(int filedes,struct stat *buf);

int lsata(const char file_name,struct statbuf);

与stat()差别:为符号链接时,lstat()返回链接自身状态

返回值

成功时返回0

否则-1

测试文件类型的宏

头文件

<sys/stat.h>

函数

S_ISREG(): 普通文件

S_ISDIR():目录

S_ISCHAR():字符文件

S_ISBLK():块文件

S_ISLNK():符号链接

S_ISSOCK(): socket

实例
S_ISREG(statbuf.st_mode)
S_ISREG(buf.st_mode)

image

实例

if(buf.st_mode&S_IRUSR)
      printf("readable by owner");
  else 
  printf("unreadable by owner");
  

access()系统调用

功能

按实际用户ID和实际组ID测试文件存储权限

头文件

#include<uistd.h>

函数原型

int access(const char *pathname,int mode);

返回值

成功时返回0

否则-1

mode参数说明

F_OK值为0,判断文件是否存在

R_OK值为4,判断文件是否有读权限

W_OK值为2,判断文件是否有写权限

X_OK值为1,判断文件是否有读写权限

(R_OK|W_OK|X_OK:可以同时使用)

access(argv[i],R_ok);

umask()系统调用

功能

为进程设置文件存储权限屏蔽字

头文件

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

函数原型

mode_t umask(mode_t mask);

image

chmod()/fchmod()系统调用

功能

更改文件权限

头文件

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

函数原型

int chmod(const char *path,mode_t mode);
int fchmod(int fildes,mode_mode);

返回值
成功时返回0
失败返回-1

image

chown()/fchown()/lchown()系统调用

功能

变更文件宿主

头文件

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

函数原型

int chown(const char *path,uid_t owner,gid_t grooup);
int fchown(int fd,uid_t owner,gid_t group);
int lchowm(const char *path,uid_t owner,gid_group);
//若path为符合链接,lchown()改变链接本身的所有者或组,chown()则改变连接所指向文件的所有者或组

返回值

成功时返回0

失败返回-1

link()/unlink()系统调用

功能

创建/删除一个硬链接

头文件

#include<unistd.h>

函数原型

int link(const char *oldpath,const char *newpath);
int unlink(const char *pathname);
//删除一个文件的目录项目并减少它的连接数

返回值

成功时返回0

失败返回-1

symlink()/readlink()系统调用

头文件

#include<unistd.h>

函数原型

int symlink(const char *oldpath,const cahr *newpath);

功能

用来创建符号连接文件

返回值

成功时返回0

否则-1

int  readlink(const char *path,char *buf,size_t bufsize);

功能

readlink函数用来读取连接文件本身的内容(也就是符号链接指向的文件的文件名)

返回值

成功时放回放置在buffer中的字符数

否则-1

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Visual Studio 2022 调用 C 语言库的步骤如下: 1. 在 Visual Studio 2022 中创建一个新的 C++ 项目。 2. 在项目中添加 C 源文件,可以通过右键单击项目,选择“添加”->“新建项”->选择“C++文件(.cpp)”->重命名为 .c 后缀来创建 C 文件。 3. 在 C 源文件中编写 C 语言库的代码,并在头文件中声明函数。 4. 在 C++ 代码中通过 `#include` 指令包含 C 头文件,并调用其中的函数。 5. 设置项目属性,将 C 语言库的路径添加到项目的链接器选项中,以便在编译时链接库。 6. 编译并运行程序。 下面是一个示例代码,演示了如何在 Visual Studio 2022 中调用 C 语言库: 在 C 源文件中(例如 `mylib.c`): ```c #include "mylib.h" int add(int x, int y) { return x + y; } ``` 在头文件中(例如 `mylib.h`): ```c #ifndef MYLIB_H #define MYLIB_H int add(int x, int y); #endif ``` 在 C++ 代码中: ```cpp #include <iostream> #include "mylib.h" int main() { int result = add(3, 4); std::cout << "The result is " << result << std::endl; return 0; } ``` 在链接器选项中添加库路径步骤: 1. 右键单击项目,选择“属性”。 2. 在左侧面板中选择“链接器”。 3. 选择“常规”。 4. 在“附加库目录”中添加 C 语言库的路径。 5. 在“附加依赖项”中添加需要链接的库,例如 `mylib.lib`。 6. 单击“确定”以保存更改。 然后编译并运行程序,就可以调用 C 语言库中的函数了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值