免费注册 查看新帖 |

Chinaunix

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

问一个《unix环境高级编程》上的问题,请指教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-31 20:16 |只看该作者 |倒序浏览
书上3.13节有这么一段程序:
程序3-4  对于指定的描述符打印文件标志
  #include <sys/types.h>
  #include <fcntl.h>
  #include “ourhdr.h”
  
  int main(int argc,char* argv[])
  {
int accmode,val;

if(argc!=2)
err_quit(“Usage: a.out <descriptor#>”);
if((val=fcntl(atoi(argv[1]),F_GETFL,0))<0)
err_sys(“fcntl error for fd %d”,atoi(argv[1]));

accmode=val&O_ACCMODE;
if(accmode==O_RDONLY)
  printf(“read only”);
else if(accmode==O_WRONLY)
  printf(“write only”);
else if(accmode==O_RDWR)
  printf(“read write”);
    else err_dump(“unknown access mode”);

if(val&O_APPEND) printf(“,append”);
if(val&O_NONBLOCK) printf(“,nonblocking”);
  #if !defined(_POSIX_SOURCE)&&defined(O_SYNC)
if(val&O_SYNC) printf(“,synchronous writes”);
  #endif
    putchar(“\n”)
exit(0);
  }
注释:
(1)运行结果:
   a.out 0 < /dev/tty
     read only
    a.out 1 > temp.foo
     cat temp.foo
     write only
     a.out 2 2>>temp.foo
     write only,append
     a.out 5 5<>temp.foo
     read write

程序指定的命令参数是2个
可 a.out 0 < /dev/tty 和a.out 2 2>>temp.foo意思是??参数4个??
a.out 1 > temp.foo的意思我倒明白,是把命令a.out 1的结果放到文件temp.foo里面去。


还有,_POSIX_SOURCE宏到底有什么用处阿??那书上第二章说了,但整个那一章就基本上完全看不明白。。。

论坛徽章:
0
2 [报告]
发表于 2006-03-31 23:41 |只看该作者
a.out 0 < /dev/tty
指的是在文件描述符0上打开/dev/tty 以供读
所以最后返回read only

a.out 2 2>>temp.foo实际上是
a.out 2
2>>temp.foo
两条语句

a.out 5 5<>temp.foo
指的是在文件描述符5上打开temp.foo以供读写
所以最后返回read write

论坛徽章:
0
3 [报告]
发表于 2006-04-01 13:32 |只看该作者
这样解释是shell翻译的,还是a.out程序本身翻译的?

论坛徽章:
0
4 [报告]
发表于 2006-04-01 13:55 |只看该作者
不理解。

可否 说的在详细一些,是谁负责这样解释,shell还是a.out

论坛徽章:
0
5 [报告]
发表于 2006-04-01 17:14 |只看该作者
那些> < >> <>都是shell完成的,深入的解释还得请哪位高手指点,我也是初学者

论坛徽章:
0
6 [报告]
发表于 2006-04-04 18:17 |只看该作者
原帖由 muxingren 于 2006-4-1 13:55 发表
不理解。

可否 说的在详细一些,是谁负责这样解释,shell还是a.out


shell解释的,对于 2>>file
它负责把file打开到文件描述符2,类型是写并append(由操作系统纪录以便对你是否可读写进行检查)。然后a.out继承这个

论坛徽章:
0
7 [报告]
发表于 2006-04-06 14:43 |只看该作者
你把这本书多看两遍就会有点明白了,我一个朋友这本书看了1年半感觉才有点收获,不要着急看不懂很正常,慢慢看,相信你会成功的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP