免费注册 查看新帖 |

Chinaunix

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

AIX 写日志文件的模式问题? 急! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-28 17:52 |只看该作者 |倒序浏览
我想做一个写日志的组件以打开文件后,直到写入文件大小为20mb 的时候
才会关闭这个文件, 可是如果在这个文件没有达到20mb , 也就是没有关闭
文件操作时, 我就将log 文件删除, 将不会现写入日志, 但它没有报错,还是可以
执行程序. 请问怎么解决这个问题????

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/file.h>
#include <errno.h>

// 测试程序 AIX 下可以通过
int main()
{
    while(1)
    {   // 在这里打开后让它一直为写
        FILE *fp = fopen( "log", "a+" );
        while(1)
        {
            // 我不想在这每次都判断一下文件存不存在
            int bt = fprintf( fp,"%s\n", "测试日志-------------搞它!" );   
            if( bt < 0 )
            {
                // 删除log 文件后并没有进来, 没报错
                printf(" fprintf 写入报错 bt[%d] \n", bt );
                break;
            }
            
            if( fflush(fp) < 0 )
            {
                // 删除log 文件后并没有进来, 没报错
                printf(" fflush 报错 errno[%d] \n", errno );
                break;               
            }
            sleep(2);
        }
        fclose(fp);
    }
    return 0;
}

论坛徽章:
0
2 [报告]
发表于 2007-07-28 17:57 |只看该作者
对了UNIX 下打开文件方式有没有独享模式??

论坛徽章:
0
3 [报告]
发表于 2007-07-30 08:34 |只看该作者
两天都没有人顶, 难道真的没有解决的办法吗?

论坛徽章:
0
4 [报告]
发表于 2007-07-30 09:35 |只看该作者
这从任何意义上都不是问题,而是OS的正常功能。

论坛徽章:
0
5 [报告]
发表于 2007-07-30 09:42 |只看该作者
知道是正常的功能, 我只是想看看不家什么方法解决

论坛徽章:
0
6 [报告]
发表于 2007-07-30 09:46 |只看该作者
写完一行后关闭文件

论坛徽章:
0
7 [报告]
发表于 2007-07-30 15:26 |只看该作者
老大, 就是为了不关闭, 才要这样做的

论坛徽章:
0
8 [报告]
发表于 2007-07-30 15:30 |只看该作者
当时我想要这种方式的想法是能提高效率, 这样做可以大大减少系统的IO 调用

论坛徽章:
0
9 [报告]
发表于 2007-07-30 15:32 |只看该作者
你又不close, 也不stat, 又要你的功能。

改系统不可能。没有想到其它的

论坛徽章:
0
10 [报告]
发表于 2007-07-30 15:40 |只看该作者
原帖由 atg 于 2007-7-28 17:52 发表
我想做一个写日志的组件以打开文件后,直到写入文件大小为20mb 的时候
才会关闭这个文件, 可是如果在这个文件没有达到20mb , 也就是没有关闭
文件操作时, 我就将log 文件删除, 将不会现写入日志, 但它没有报错 ...


你这个文件打开的时候,怎么能够被删掉?只有在你关掉的时候,他才会被删掉吧。

可以试下dup这个fd,但要保正进程不要退出
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP