免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7998 | 回复: 11
打印 上一主题 下一主题

linux下c编程,如何获得文件的权限? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-10-14 18:45 |只看该作者 |倒序浏览
菜鸟问题:
    初学linux编程,写一个程序,模拟shell中的ls -l 命令,因为ls -l 命令将文件的权限打印出来,请教一下该怎么办?   

论坛徽章:
0
2 [报告]
发表于 2005-10-14 18:51 |只看该作者

linux下c编程,如何获得文件的权限?

man 2 stat,struct stat里面有一个field就是权限。

论坛徽章:
0
3 [报告]
发表于 2005-10-14 18:54 |只看该作者

linux下c编程,如何获得文件的权限?

你去下一本《UNIX环境高级编程》里面有例子,可以看看。
地址
http://www.newebug.com/ebook/linux-unix/291.shtml

论坛徽章:
0
4 [报告]
发表于 2005-10-14 19:46 |只看该作者

linux下c编程,如何获得文件的权限?

我现在就在学《UNIX环境高级编程》这本书。
struct stat里面那个field就是st_mode,类型是mode_t,怎么把它以rwx的格式输出,就是像ls -l xxx一样输出,-rw------?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-10-14 19:48 |只看该作者

linux下c编程,如何获得文件的权限?

原帖由 "沙漠探戈" 发表:
我现在就在学《UNIX环境高级编程》这本书。
struct stat里面那个field就是st_mode,类型是mode_t,怎么把它以rwx的格式输出,就是像ls -l xxx一样输出,-rw------?

  1.        S_IFMT     0170000   bitmask for the file type bitfields
  2.        S_IFSOCK   0140000   socket
  3.        S_IFLNK    0120000   symbolic link
  4.        S_IFREG    0100000   regular file
  5.        S_IFBLK    0060000   block device
  6.        S_IFDIR    0040000   directory
  7.        S_IFCHR    0020000   character device
  8.        S_IFIFO    0010000   fifo
  9.        S_ISUID    0004000   set UID bit
  10.        S_ISGID    0002000   set GID bit (see below)
  11.        S_ISVTX    0001000   sticky bit (see below)
  12.        S_IRWXU    00700     mask for file owner permissions
  13.        S_IRUSR    00400     owner has read permission
  14.        S_IWUSR    00200     owner has write permission
  15.        S_IXUSR    00100     owner has execute permission
  16.        S_IRWXG    00070     mask for group permissions
  17.        S_IRGRP    00040     group has read permission
  18.        S_IWGRP    00020     group has write permission
  19.        S_IXGRP    00010     group has execute permission
  20.        S_IRWXO    00007     mask for permissions for others (not in group)
  21.        S_IROTH    00004     others have read permission
  22.        S_IWOTH    00002     others have write permisson
  23.        S_IXOTH    00001     others have execute permission
复制代码


有这么多宏来判断呢..判断出来那位了.就显示那个位的字母.否则-

论坛徽章:
0
6 [报告]
发表于 2005-10-14 19:53 |只看该作者

linux下c编程,如何获得文件的权限?

谢谢楼上!!太感谢了。。。
还有楼上的楼上,都感谢!。

论坛徽章:
0
7 [报告]
发表于 2005-10-14 21:13 |只看该作者

linux下c编程,如何获得文件的权限?

刚刚试了一下,S_IRUSR    系列不能判断文件读写权限~~
报措说引用的不是函数 ~~

论坛徽章:
0
8 [报告]
发表于 2005-10-14 21:16 |只看该作者

linux下c编程,如何获得文件的权限?

但使用S_ISREG系列宏可以判断文件类型~~~

论坛徽章:
0
9 [报告]
发表于 2005-10-14 21:23 |只看该作者

linux下c编程,如何获得文件的权限?

请高手解惑阿~!在线等!

论坛徽章:
0
10 [报告]
发表于 2005-10-14 21:35 |只看该作者

linux下c编程,如何获得文件的权限?


  1. #include <stdio.h>;
  2. #include <sys/stat.h>;
  3. int main(int argc,char* argv[])
  4. {
  5.     struct stat st;

  6.     if(argc!=2)
  7.         return 1;

  8.     stat(argv[1],&st);

  9.     if(st.st_mode&S_IRUSR)
  10.         printf("yes,\"%s\" is readable\n",argv[1]);

  11.     return 0;
  12. }
复制代码


执行
note:~# gcc a.c
note:~# ./a.out a.c
yes,"a.c" is readable
note:~# chmod -r a.c
note:~# ./a.out a.c
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP