当前位置: 技术问答>linux和unix
怎样用描述符重新打开文件?
来源: 互联网 发布时间:2016-05-01
本文导语: 如题,已经打开了某个文件,得到文件描述符(int)或文件指针(FILE*)。 但是文件名已不可知,请问怎样通过文件描述符或文件指针重新打开该文件? | 既然已经打开,为什么还要重新打...
如题,已经打开了某个文件,得到文件描述符(int)或文件指针(FILE*)。
但是文件名已不可知,请问怎样通过文件描述符或文件指针重新打开该文件?
但是文件名已不可知,请问怎样通过文件描述符或文件指针重新打开该文件?
|
既然已经打开,为什么还要重新打开?
如果你要直到文件描述符对应的文件,那么用下面这个命令看看吧:
ls -l /proc//fd/
:打开文件的进程号;
:文件描述符;
good luck!
如果你要直到文件描述符对应的文件,那么用下面这个命令看看吧:
ls -l /proc//fd/
:打开文件的进程号;
:文件描述符;
good luck!
|
open的目的就是返回文件描述符,既然你已经得到了,为什么还要再次打开呢?
|
已经打开了文件?不是通过文件名打开的吗?
|
你最好之前用一个全局的变量保存文件名,那另一个线程不就可以操作该文件了。难道这样不好吗?
|
你依靠文件名 打开描述符后 就没有必要保存文件名了。 直接使用就可以了。
因为 描述符是 进程相关的 不是 线程相关的。 当然 描述符 要作为全局变量让别的线程访问到。
|
如果有文件描述符号
可以使用dup2,dup来获得一个新的文件描述符号,和重新打开一遍的效果是一样的,
如果想通过文件描述符得到一个FILE*指针,那就使用fdopen,
如果已经有了个FILE *指针,想获得文件描述符,那就使用fileno函数
可以使用dup2,dup来获得一个新的文件描述符号,和重新打开一遍的效果是一样的,
如果想通过文件描述符得到一个FILE*指针,那就使用fdopen,
如果已经有了个FILE *指针,想获得文件描述符,那就使用fileno函数
|
问题是,现在有2个线程,各自独立访问该文件,就不能共用描述符,否则文件偏移量会乱。
-----要想不乱,就用文件锁。 各自访问该文件没啥意义。
-----要想不乱,就用文件锁。 各自访问该文件没啥意义。
|
同意楼上的,你需要加一个二维信号量,防止竞争!
|
要主意下防止竞争!
|
学习