一个文件描述符,能否判断这个文件已经打开

加盾男爵 2016-10-11 03:45:36
UNIX环境编程(第三版)

最近在看这本书,书后面有个例子,要求自己实现dup2()函数的功能,不能使用fcntl()函数

现在有个问题,dup2()函数的第二个参数(文件描述符),如果已经打开了,那就必须先关闭他,我想问下,对于一个通过参数传入函数的文件描述符,如果判断他是否是已经打开?
...全文
375 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34031956 2017-01-08
  • 打赏
  • 举报
回复
引用 8 楼 shihengzhen101 的回复:
[quote=引用 4 楼 qazaq408 的回复:] [quote=引用 2 楼 shihengzhen101 的回复:] 什么文件描述符 是fstream还是FILE*

int F;
F = open("/home/dv/zz.txt",O_REONLY|O_CREATE|O_TRUN);
用这种方式打开结果得到文件描述符F,当然这代码文件是打开的,现在我的麻烦事,假如就这样一个文件描述符,作为参数传入函数,在函数内如何判断这个文件是否处于打开状态,要求不适用fcntl()函数[/quote] 我感觉这个不容易办到吧,他就是一个指针,里面又不包含状态信息,把任意一个变量的地址传给他都是有效的,况且把一个已经关闭的文件指针传给你也是检测不出来的,如果不进行文件操作,是不太可能知道这个指针是否有效的,只能做简单的判断,比如是不是空指针[/quote] 文件描述符是个int值,并不是个指针。你把文件指针和文件操作符搞混了。(这也能搞混- -几天没睡觉了?
赵4老师 2016-10-13
  • 打赏
  • 举报
回复
参考Linux源代码相关片断?
AlbertS 2016-10-13
  • 打赏
  • 举报
回复
什么文件描述符 是fstream还是FILE*
加盾男爵 2016-10-13
  • 打赏
  • 举报
回复
有人么
AlbertS 2016-10-13
  • 打赏
  • 举报
回复
引用 4 楼 qazaq408 的回复:
[quote=引用 2 楼 shihengzhen101 的回复:] 什么文件描述符 是fstream还是FILE*

int F;
F = open("/home/dv/zz.txt",O_REONLY|O_CREATE|O_TRUN);
用这种方式打开结果得到文件描述符F,当然这代码文件是打开的,现在我的麻烦事,假如就这样一个文件描述符,作为参数传入函数,在函数内如何判断这个文件是否处于打开状态,要求不适用fcntl()函数[/quote] 我感觉这个不容易办到吧,他就是一个指针,里面又不包含状态信息,把任意一个变量的地址传给他都是有效的,况且把一个已经关闭的文件指针传给你也是检测不出来的,如果不进行文件操作,是不太可能知道这个指针是否有效的,只能做简单的判断,比如是不是空指针
赵4老师 2016-10-13
  • 打赏
  • 举报
回复
参考Linux命令lsof的源代码?
加盾男爵 2016-10-13
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
参考Linux源代码相关片断?
楼上的楼上,打错。。。。
加盾男爵 2016-10-13
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
参考Linux源代码相关片断?
楼下帮忙看些,谢谢
加盾男爵 2016-10-13
  • 打赏
  • 举报
回复
引用 2 楼 shihengzhen101 的回复:
什么文件描述符 是fstream还是FILE*

int F;
F = open("/home/dv/zz.txt",O_REONLY|O_CREATE|O_TRUN);
用这种方式打开结果得到文件描述符F,当然这代码文件是打开的,现在我的麻烦事,假如就这样一个文件描述符,作为参数传入函数,在函数内如何判断这个文件是否处于打开状态,要求不适用fcntl()函数

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧