免费注册 查看新帖 |

Chinaunix

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

[求助] 如何更改一个已经打开文件的读写模式? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-04 16:24 |只看该作者 |倒序浏览
[求助] 如何更改一个已经打开文件的读写模式?   

使用fstream打开文件,由于文件不一定存在,所以,打开时先用ios:ut模式打开,如果成功,想修改为读写模式,又没有办法在不关闭文件的情况下来操作?

记得open打开一个文件获得句柄后是可以修改的,但是不知道fstream是否可以。

感谢大家!

论坛徽章:
0
2 [报告]
发表于 2007-02-05 08:58 |只看该作者
版主帮忙!

论坛徽章:
0
3 [报告]
发表于 2007-02-05 09:16 |只看该作者
本来是按照读写方式打开,但是,当文件不存在时需要创建文件,我发现只有当ios::in|ios:ut|ios::trunc在文件不存在时才能创建并读写打开文件,我的要求是如果文件存在以读写方式打开保留文件内容,如果文件不存在创建并以读写方式打开!

论坛徽章:
0
4 [报告]
发表于 2007-02-05 12:07 |只看该作者
--

请问通过 open(2) 获得文件描述符以后,如何在不关闭文件的情况下修改访问模式?请用代码说明。

--

论坛徽章:
0
5 [报告]
发表于 2007-02-05 12:18 |只看该作者
The file table keeps track of the byte offset in the file where the user's next read or write will start, and the access rights allowed to the opening process.


用户如何修改 file table?

The file table is a global kernel structure


全局内核数据结构

引用自:UNIX 操作系统设计,MJB 著

--

论坛徽章:
0
6 [报告]
发表于 2007-02-05 12:22 |只看该作者
原帖由 fibbery 于 2007-2-5 09:16 发表
本来是按照读写方式打开,但是,当文件不存在时需要创建文件,我发现只有当ios::in|ios::out|ios::trunc在文件不存在时才能创建并读写打开文件,我的要求是如果文件存在以读写方式打开保留文件内容,如果文件不存在创建并以读写方式打开!


O_CREAT | O_RDWR

另外,open(2) 返回的不叫句柄。句柄通常是指针

--

论坛徽章:
0
7 [报告]
发表于 2007-02-05 12:34 |只看该作者
--

用在 stdio 上可以在 open(2) 返回正常以后使用 fdopen(3)

--

论坛徽章:
0
8 [报告]
发表于 2007-02-05 12:39 |只看该作者
原帖由 fibbery 于 2007-2-4 16:24 发表
[求助] 如何更改一个已经打开文件的读写模式?   

使用fstream打开文件,由于文件不一定存在,所以,打开时先用ios:ut模式打开,如果成功,想修改为读写模式,又没有办法在不关闭文件的情况下来操作?

记 ...


fopen里面直接可以设定这些参数的,如果文件不存在返回NULL,我几乎不用C++的I/O流也不会用(cout,cin除外)

论坛徽章:
0
9 [报告]
发表于 2007-02-06 11:07 |只看该作者
感谢两位,我现在觉得,简单文件操作使用fstream还是很方便,但是现在我想自己来封装文件操作的类。

论坛徽章:
0
10 [报告]
发表于 2007-02-06 16:28 |只看该作者
我也从来不用C++的I/O流,COUT,CIN除外
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP