免费注册 查看新帖 |

Chinaunix

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

请问“文件重定向” [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-10-12 11:05 |只看该作者 |倒序浏览
一个socket的server端程序my_server,由于该程序只有打印信息而没有写日志的功能,所以运行时我用 my_server >;>; server_log.log来记录日志。但是发现日志并不能实时记录my_server的输出信息,大概要滞后1k字节,这样log的实时性就太弱了。\r\n如果要让日志实时记录my_server的输出,可以用什么办法呢?

论坛徽章:
0
2 [报告]
发表于 2005-10-12 11:10 |只看该作者

请问“文件重定向”

滞后1k是什么意思啊?如果要确保日志的可靠性,就再程序里加吧

论坛徽章:
0
3 [报告]
发表于 2005-10-12 11:16 |只看该作者

请问“文件重定向”

[quote]原帖由 \"fwizard\"]滞后1k是什么意思啊?如果要确保日志的可靠性,就再程序里加吧[/quote 发表:\n\r\n就是说my_server输出2k字节后,log中会记录输出的前1k字节的字符,等到后1k字节也记录进log后,实际上程序已经输出了3k的字符。\r\n因为开发的根本就没有考虑写日志,所以…………

论坛徽章:
0
4 [报告]
发表于 2005-10-12 11:28 |只看该作者

请问“文件重定向”

个人感觉不应该是重定向的问题,比如你用find命令查找系统所有文件然后定向到一个txt也有几m吧,都不会有错的.所以,我认为是你的程序有问题,而不是重定向的问题.\r\nps:仅代表个人观点

论坛徽章:
0
5 [报告]
发表于 2005-10-12 11:36 |只看该作者

请问“文件重定向”

我是认为重定向的写入是有buff的,只有当buff满了,或者程序退出的时候才会将buff写入文件,而这个buff的大小是1k。所以如果能调整buff的大小就能解决问题。

论坛徽章:
0
6 [报告]
发表于 2005-10-12 11:39 |只看该作者

请问“文件重定向”

不是这样的,你可以不用重定向,直接看shell上的输出,程序向shell输出了什么,它就会向重定向文件输出什么.估计你的理解有误

论坛徽章:
0
7 [报告]
发表于 2005-10-12 12:54 |只看该作者

请问“文件重定向”

[quote]原帖由 \"fwizard\"]不是这样的,你可以不用重定向,直接看shell上的输出,程序向shell输出了什么,它就会向重定向文件输出什么.估计你的理解有误[/quote 发表:\n\r\n这句话我不大明白,但是我做了一个测试\r\n1、编写以下程序:a.c\r\n/*file \"a.c\"*/\r\nint main()\r\n{\r\n        int i;\r\n        for (i=0; i<60; i++)\r\n        {\r\n                printf(\"i = %d\\n\", i);\r\n                sleep(1);\r\n        }\r\n\r\n}\r\n\r\n2、编译 cc a.c\r\n3、运行 a.out >; a_out.log\r\n4、在程序运行的一分钟内用\"ls -l a_out.log\"观察\"a_out.log\"的变化\r\n结果发现a_out.log在a.out运行的时刻即被创建,但a_out.log文件的大小一直为0,直到一分钟后a.out运行完成并退出,a_out.log文件的大小才变为410。\r\n\r\n测试结果表明a_out.log是在程序启动时刻创建,但是是在退出的时刻才写入。

论坛徽章:
0
8 [报告]
发表于 2005-10-12 13:13 |只看该作者

请问“文件重定向”

1、另一程序 \"b.c\"\r\n/*file \"b.c\"*/\r\nint main()\r\n{\r\n        int i, n;\r\n        for (i=1; i<=60; i++)\r\n        {\r\n                for (n=0; n<100; n++){\r\n                        printf(\"%d \", n);\r\n                }\r\n                printf(\"\\n i = %d\\n\", i);\r\n                sleep(1);\r\n        }\r\n        return 0;\r\n}\r\n\r\n\r\n2、编译 cc b.c -o b.out\r\n3、执行 b.out >; b_out.log\r\n4、用ls -l 观察 b_out.log,发现b_out.log在程序运行时刻被创建,在运行期限被修改五次,在此四个时刻观察\"b_out.log\",i的值分别为13、27、41、55、60。\r\n\r\n以上说明在程序运行期间\"b_out.log\"有被修改过,且每次写入的字节数相近。

论坛徽章:
0
9 [报告]
发表于 2005-10-12 14:51 |只看该作者

请问“文件重定向”

我想我们两个所要说明东西有点偏差.\r\n1.关于重定向是写buffer还是及时写这点,我以前只是用过,把一些非守护程序的结果重定向到一个文件里.比如ls -al>;123.txt.根据你以上的情况来说,重定向应该是有buffer的,这点我学习了\r\n2.我后面要给你强调的是,你用重定向的方法得到的只是程序给终端输出的信息,难道那些信息就是log信息.如果确实就是log信息的话,与你说差1k应该就没有什么关系了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP