免费注册 查看新帖 |

Chinaunix

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

[函数] major(),minor()是什么函数,哪些函数会man不到 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-25 12:02 |只看该作者 |倒序浏览
major(),minor()是什么函数,为什么会man不到呢,以前还没碰到过种情问呢。所以问一下,谢谢

论坛徽章:
0
2 [报告]
发表于 2005-06-27 08:34 |只看该作者

major(),minor()是什么函数,哪些函数会man不到

这个函数出自于书上的一段代码

  1. [root@aphhk linux]# cat mstat.c
  2. #include <unistd.h>;
  3. #include <sys/stat.h>;
  4. #include <sys/types.h>;
  5. #include <fcntl.h>;
  6. #include <time.h>;
  7. #include <stdlib.h>;
  8. #include <stdio.h>;

  9. int
  10. main(int argc, char **argv)
  11. {
  12.         struct stat buf;
  13.         mode_t mode;
  14.         char type[80];
  15.         int fd;


  16.         if (argc !=2) {
  17.                 puts("USEAGE: mstat {file}");
  18.                 exit(EXIT_FAILURE);
  19.         }

  20.         if ((fd = open(argv[1],O_RDONLY)) < 0) {
  21.                 perror("open");
  22.                 exit(EXIT_FAILURE);
  23.         }

  24.         if ((fstat(fd,&buf)) < 0) {
  25.                 perror("fstat");
  26.                 exit(EXIT_FAILURE);
  27.         }
  28.         mode = buf.st_mode;
  29.         printf("   FILE: %s\n",argv[1]);
  30.         printf("  INODE: %ld\n",buf.st_ino);
  31.         printf(" DEVICE: %d,%d\n",major(buf.st_dev),
  32.                                   minor(buf.st_dev));
  33.         printf("   MODE: %#o\n",mode & ~(S_IFMT));
  34.         printf("  LINKS: %d\n",buf.st_nlink);
  35.         printf("    UID: %d\n",buf.st_uid);
  36.         printf("    GID: %d\n",buf.st_gid);

  37.         if (S_ISLNK(mode))
  38.                 strcpy(type,"Symbolic line");
  39.         else if (S_ISREG(mode))
  40.                 strcpy(type,"Regular file");
  41.         else if (S_ISDIR(mode))
  42.                 strcpy(type,"Directory");
  43.         else if (S_ISCHR(mode))
  44.                 strcpy(type,"Character device");
  45.         else if (S_ISBLK(mode))
  46.                 strcpy(type,"Block device");
  47.         else if (S_ISFIFO(mode))
  48.                 strcpy(type,"FIFO");
  49.         else if (S_ISSOCK(mode))
  50.                 strcpy(type,"Socket");
  51.         else
  52.                 strcpy(type,"Unknow type");

  53.         printf("    TYPE: %s\n",type);
  54.         printf("    SIZE: %ld\n",buf.st_size);
  55.         printf("BLK SIZE: %ld\n",buf.st_blksize);
  56.         printf("  BLOCKS: %d\n",(int)buf.st_blocks);
  57.         printf("ACCESSED: %s",ctime(&buf.st_atime));
  58.         printf("MODIFIED: %s",ctime(&buf.st_mtime));
  59.         printf(" CHANGED: %s",ctime(&buf.st_ctime));

  60.         if(close(fd) < 0){
  61.                 perror("close");
  62.                 exit(EXIT_FAILURE);

  63.         }
  64.         exit(EXIT_SUCCESS);
  65. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2005-06-27 09:29 |只看该作者

major(),minor()是什么函数,哪些函数会man不到

看样子是返回设备的主,次版本号阿

论坛徽章:
0
4 [报告]
发表于 2005-06-27 10:09 |只看该作者

major(),minor()是什么函数,哪些函数会man不到

major()、minor()是什么函数谁也不知道,看完整的程序代码。
至于哪些函数会man不到嘛,太多了,数不胜数,可以肯定的是:自己写的man不到。

论坛徽章:
0
5 [报告]
发表于 2005-06-27 10:16 |只看该作者

major(),minor()是什么函数,哪些函数会man不到

似乎是一个系统提供的宏
look /usr/include/sys/sysmacros.h
但是楼主的程序用起来似乎不太对
并不能得到正确的主/次设备号

论坛徽章:
0
6 [报告]
发表于 2005-06-27 10:43 |只看该作者

major(),minor()是什么函数,哪些函数会man不到

这段码来自《gnu/linux编程指南》,代码运行结果如下,我对主次设备号概念不了解,大家看正不正确
  1. [root@aphhk linux]# ./a.out mstat.c
  2.    FILE: mstat.c
  3.   INODE: 2736626
  4. DEVICE: 8,2
  5.    MODE: 0644
  6.   LINKS: 1
  7.     UID: 0
  8.     GID: 0
  9.     TYPE: Regular file
  10.     SIZE: 1604
  11. BLK SIZE: 4096
  12.   BLOCKS: 8
  13. ACCESSED: Mon Jun 27 10:30:00 2005
  14. MODIFIED: Sat Jun 25 11:25:33 2005
  15. CHANGED: Sat Jun 25 11:25:33 2005
复制代码

论坛徽章:
0
7 [报告]
发表于 2005-06-27 10:48 |只看该作者

major(),minor()是什么函数,哪些函数会man不到

例如我的机器上/dev/zero这个设备
主/次设备号分别是1,5
但是用这个程序跑出来的是3,12

论坛徽章:
0
8 [报告]
发表于 2005-06-27 11:40 |只看该作者

major(),minor()是什么函数,哪些函数会man不到

大牛们帮看看吧
这是个问题耶
究竟怎样得到设备的主/次设备号呢

论坛徽章:
0
9 [报告]
发表于 2005-06-27 14:12 |只看该作者

major(),minor()是什么函数,哪些函数会man不到

原帖由 "bleem1998" 发表:
例如我的机器上/dev/zero这个设备
主/次设备号分别是1,5
但是用这个程序跑出来的是3,12


你是怎么查到知道你的设备号的,能说说吗?

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

major(),minor()是什么函数,哪些函数会man不到


  1. SuSE9:# ls -l /dev/zero
  2. crw-rw-rw-  1 root root 1, 5 Oct  2  2004 /dev/zero
  3. SuSE9:#
复制代码

那个"1, 5"就是了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP