社区
C语言
帖子详情
c语言打开文件不关闭的后果?
C员外
2007-08-18 04:48:48
最近接手改造一个scounix下c语言开发的后台项目,需要频繁打开文件,代码实现过程中文件打开后竟然没有关闭!
疑惑:这个后台系统一直运行一年多也没有问题,很少重启,打开文件量也很大(每天2000次左右)啊,也没有出现打开文件失败的日志,真的很纳闷!
难道操作系统自动关闭文件l了还是操作系统支持打开文件数很大?
...全文
2172
10
打赏
收藏
c语言打开文件不关闭的后果?
最近接手改造一个scounix下c语言开发的后台项目,需要频繁打开文件,代码实现过程中文件打开后竟然没有关闭! 疑惑:这个后台系统一直运行一年多也没有问题,很少重启,打开文件量也很大(每天2000次左右)啊,也没有出现打开文件失败的日志,真的很纳闷! 难道操作系统自动关闭文件l了还是操作系统支持打开文件数很大?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
夏至夕陽
2007-08-20
打赏
举报
回复
只有一个进程打开一个文件,另一个进程又要打开这个文件的话才会报错吧
C员外
2007-08-20
打赏
举报
回复
代码确定没有close,整个系统就这个服务(单线程)在跑,在重复的读写.
因为打开的是重复的文件,打开过的文件句柄被冲掉了一直没有释放,内存泄漏.
应该会导致系统打开文件数目的极限。但我没有看到打开文件失败的日志,所以才奇怪(也许应用服务会周期性重启,这个就不知道了)。
linux打开文件数量能通过内核更改再编译或用ulimit更改,scounix刚手,还不怎么会用...
zylian
2007-08-19
打赏
举报
回复
补充楼上的,
你家可以有千万观众观看,但进去的却是只有一个
查看可以无限制,但一但修改就不行了.
iambic
2007-08-19
打赏
举报
回复
一个文件当然可以被几个进程同时访问,既然如此,被一个进程访问几次又有什么不行的。
不过如果你同时对文件读、写,会有同步的问题。
ForestDB
2007-08-19
打赏
举报
回复
呵呵,好玩。
个人觉得cceczjxy()讲的有点道理,要不就是关掉了,要不是系统资源开得非常大,这才没有memory leak出现。
Avoid
2007-08-19
打赏
举报
回复
这个就像你把家里门打开了。。。
没有贼那就没啥鸟是了。。。
shjmqqc111
2007-08-19
打赏
举报
回复
这个fopen只是缓冲打开的.不是直接的文件读写.在说只是读.没有写.应该不会出现问题.
但如果有写.不出问题才是怪事了.
cceczjxy
2007-08-18
打赏
举报
回复
fp = fopen("pp.txt","r");
fread(......);
ft = fopen("pp.txt","r");
你样当然可以了,fp,和ft不是同一个流.只是打开的文件相同而已.
楼主仔细找找,应该有其它地方关闭它.
要不就是系统内设置的进程的最大打开文件数设置的非常大,
按你说的,至少要大于800000.
这样也不是不可以.
ulimit 你可以看一下,你的设置.
gqhonesty
2007-08-18
打赏
举报
回复
刚才在VC下式了下,居然没有问题哈!
FILE *fp,*ft;
fp = fopen("pp.txt","r");
fread(......);
ft = fopen("pp.txt","r");
if(ft==NULL)
{
printf("error!\n");
}
居然没有看到error字样,我靠!
gqhonesty
2007-08-18
打赏
举报
回复
C可以不关闭文件,再打开吗?
好像不行把!
Docker安装 Mysql主从同步
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。Mysql主从
docker 版 mysql 主从同步
【代码】docker 版 mysql 主从同步。
使用docker实现logstash同步mysql到es
准备工作:1.有mysql的连接方式,并且可以连接成功2.有es的连接方式,并且可以连接成功3.安装了docker环境是Ubuntu中安装了docker。
mysql同步docker_基于Docker实现Mysql主从同步
基于Docker实现Mysql主从同步Docker搭建主从服务MySQL Docker Image 安装docker pull mysql:8.0运行容器Master 对外映射端口 3307docker run -p 3307:3306 --name master_mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0Slave 对外映射端口 3308do...
docker安装mysql并配置主从同步
MASTER_LOG_FILE = 'binlog.000005',#主库binlog文件,第1步执行结果中获取。-v /usr/local/mysql/data:/var/lib/mysql:映射数据目录,宿主机:容器。-v /usr/local/mysql/log:/var/log/mysql:映射日志目录,宿主机:容器。-v /usr/local/mysql/conf:/etc/mysql:映射配置目录,宿主机:容器。MASTER_USER = 'master',#主库用于binlog同步的账户。
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章