最近在看这本书,书后面有个例子,要求自己实现dup2()函数的功能,不能使用fcntl()函数
现在有个问题,dup2()函数的第二个参数(文件描述符),如果已经打开了,那就必须先关闭他,我想问下,对于一个通过参数传入函数的文件描述符,如果判断他是否是已经打开?
9 个解决方案
#1
有人么
#2
什么文件描述符
是fstream还是FILE*
是fstream还是FILE*
#3
参考Linux源代码相关片断?
#4
int F;
F = open("/home/dv/zz.txt",O_REONLY|O_CREATE|O_TRUN);
用这种方式打开结果得到文件描述符F,当然这代码文件是打开的,现在我的麻烦事,假如就这样一个文件描述符,作为参数传入函数,在函数内如何判断这个文件是否处于打开状态,要求不适用fcntl()函数
#5
楼下帮忙看些,谢谢
#6
楼上的楼上,打错。。。。
#7
参考Linux命令lsof的源代码?
#8
我感觉这个不容易办到吧,他就是一个指针,里面又不包含状态信息,把任意一个变量的地址传给他都是有效的,况且把一个已经关闭的文件指针传给你也是检测不出来的,如果不进行文件操作,是不太可能知道这个指针是否有效的,只能做简单的判断,比如是不是空指针
#9
什么文件描述符
是fstream还是FILE*
int F;
F = open("/home/dv/zz.txt",O_REONLY|O_CREATE|O_TRUN);
用这种方式打开结果得到文件描述符F,当然这代码文件是打开的,现在我的麻烦事,假如就这样一个文件描述符,作为参数传入函数,在函数内如何判断这个文件是否处于打开状态,要求不适用fcntl()函数
我感觉这个不容易办到吧,他就是一个指针,里面又不包含状态信息,把任意一个变量的地址传给他都是有效的,况且把一个已经关闭的文件指针传给你也是检测不出来的,如果不进行文件操作,是不太可能知道这个指针是否有效的,只能做简单的判断,比如是不是空指针
文件描述符是个int值,并不是个指针。你把文件指针和文件操作符搞混了。(这也能搞混- -几天没睡觉了? )
#1
有人么
#2
什么文件描述符
是fstream还是FILE*
是fstream还是FILE*
#3
参考Linux源代码相关片断?
#4
什么文件描述符
是fstream还是FILE*
int F;
F = open("/home/dv/zz.txt",O_REONLY|O_CREATE|O_TRUN);
用这种方式打开结果得到文件描述符F,当然这代码文件是打开的,现在我的麻烦事,假如就这样一个文件描述符,作为参数传入函数,在函数内如何判断这个文件是否处于打开状态,要求不适用fcntl()函数
#5
参考Linux源代码相关片断?
楼下帮忙看些,谢谢
#6
参考Linux源代码相关片断?
楼上的楼上,打错。。。。
#7
参考Linux命令lsof的源代码?
#8
什么文件描述符
是fstream还是FILE*
int F;
F = open("/home/dv/zz.txt",O_REONLY|O_CREATE|O_TRUN);
用这种方式打开结果得到文件描述符F,当然这代码文件是打开的,现在我的麻烦事,假如就这样一个文件描述符,作为参数传入函数,在函数内如何判断这个文件是否处于打开状态,要求不适用fcntl()函数
我感觉这个不容易办到吧,他就是一个指针,里面又不包含状态信息,把任意一个变量的地址传给他都是有效的,况且把一个已经关闭的文件指针传给你也是检测不出来的,如果不进行文件操作,是不太可能知道这个指针是否有效的,只能做简单的判断,比如是不是空指针
#9
什么文件描述符
是fstream还是FILE*
int F;
F = open("/home/dv/zz.txt",O_REONLY|O_CREATE|O_TRUN);
用这种方式打开结果得到文件描述符F,当然这代码文件是打开的,现在我的麻烦事,假如就这样一个文件描述符,作为参数传入函数,在函数内如何判断这个文件是否处于打开状态,要求不适用fcntl()函数
我感觉这个不容易办到吧,他就是一个指针,里面又不包含状态信息,把任意一个变量的地址传给他都是有效的,况且把一个已经关闭的文件指针传给你也是检测不出来的,如果不进行文件操作,是不太可能知道这个指针是否有效的,只能做简单的判断,比如是不是空指针
文件描述符是个int值,并不是个指针。你把文件指针和文件操作符搞混了。(这也能搞混- -几天没睡觉了? )