关于多线程/进程访问文件占用的问题。

问题描述

现在有一个程序A在运行,它将日志记录到一个txt文本文件中。为了便于使用日志文件,单独查看txt已经不能够支撑运行分析。此时需要定制一个日志分析软件B。但是A程序运行时一直独占使用该txt文件以便随时快速写入日志。并且A程序开发时并没有考虑日志文件将来的监控功能。故A程序不能为此需求做任何设置或变动。由于B不能在A运行时监控日志情况,所以失去了实时监控的意义。日志组件为log4net,请问如何做到实时监控?

解决方案

解决方案二:

解决方案三:
引用1楼duanzi_peng的回复:你好,帖子中忘了加上:目前使用文件监控类FileSystemWatcher仅仅是为了触发事件发送信号AutoResetEvent.Set。因为日志文件很大,一般来说最少有1万行,平均3万。我不想任何变动都重新读取整个文件。所以目前使用的是另建子线程用来无止尽的读文件(streamreader),当读到最后一行时便无限制等待信号。故你的这个网址我认为是没有太大用处的
解决方案四:
A程序如果可以修改,那么将它打开文件的共享权限设置为共享读。
解决方案五:
连写个日志的(只要在公共调用层修改)几行代码都“不能为此需求做任何设置或变动”,我是觉得除了公司倒闭、产品下线,也没有什么好办法了。
解决方案六:
一直打开是可以设置成允许其他程序读取文件的,如果A本来就是这样就不用做任何改变,如果不是修改下打开方式也不会改变a的任何功能,为何不能?
解决方案七:
楼主提出了一个问题:我的程序有个大BUG,我不想改任何代码,但是想去掉这个BUG那么只能按4楼的办法,整个丢弃掉不要用,就没有BUG了
解决方案八:
提问题,寻求解决办法,是在"要把错误的改成正确的"这个前提下的有错误又不改,那你到底想问什么?
解决方案九:
引用4楼sp1234的回复:

连写个日志的(只要在公共调用层修改)几行代码都“不能为此需求做任何设置或变动”,我是觉得除了公司倒闭、产品下线,也没有什么好办法了。

呵呵,你是小公司呆久了吧,一个人在几百人的公司横惯了所以什么都敢莫名其妙的叫嚣。在国企集团,部门之间沟通都是有阶层的,你难道不知道?这么点问题让你等3个月,我就不能先发帖问问有没有其他办法?你很适合去网易啊,那里的键盘侠都很欢迎你!
解决方案十:
引用8楼youaway的回复:

Quote: 引用4楼sp1234的回复:
连写个日志的(只要在公共调用层修改)几行代码都“不能为此需求做任何设置或变动”,我是觉得除了公司倒闭、产品下线,也没有什么好办法了。

呵呵,你是小公司呆久了吧,一个人在几百人的公司横惯了所以什么都敢莫名其妙的叫嚣。在国企集团,部门之间沟通都是有阶层的,你难道不知道?这么点问题让你等3个月,我就不能先发帖问问有没有其他办法?你很适合去网易啊,那里的键盘侠都很欢迎你!

你是在大国企呆久了,只懂玩人事,根本不关心技术了吧?你这个问题,不改代码还要去掉BUG,技术层面上根本无解.如果做这个软件的人拒不配合,那你也只能干等了呗.

时间: 2024-10-30 22:00:10

关于多线程/进程访问文件占用的问题。的相关文章

[color=#FF0000][请教]如何实现多个进程对文件的并发读写访问,想用加锁机制,但不甚明白,请指教[/color]

问题描述 1.所有的进程都在读文件的话,文件放开,谁都可以读2.如果有一个进程在写文件,读写进程就都阻塞,被阻塞的进程排成队列,一旦该进程写完毕,排队的进程开始对文件的访问.3.如果一个进程要写该文件,但是发现有些进程正在读文件,则等读文件的进程都OK后,才开始写文件,写的过程中阻塞后面来的读写进程. 解决方案 解决方案二:windows机制好象不允许多个进程读同一文件哦解决方案三:不用你做吧,StreamWriter写文件的时候,就是独占的StreamRead读文件的时候文件可以随意读取的解决

如何观察进程的内存占用情况

概述       想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题--你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存.这里我们可以看到VIRT.RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟大家一起探讨的问题.当然如果更加深入一点,你可能会问进程所占用的那些物理内存都用在了哪些地方?这时候top命令可能不能给到你你所想要的答案了,不过我们可以分析proc文件系统提供的smaps文件,这个文件详

编程实现遍历ACL访问控制列表检查进程访问权限

阅读本文的朋友需要对Windows访问控制模型有初步的了解,了解Token(访问令牌),ACL(访问控制列表),DACL(选择访问控制列表),ACE(访问控制列表项)等与访问控制模型相关的名词含义及之间的关系,当然我也会在文中简要科普一下ACM. 写这篇文章的目的主要是最近在写一个Win下本地提权的东西,涉及到了对ACL的操作,以前对ACL总是避而远之,Windows访问控制模型很复杂很头疼一个API会牵出一大把初始化要用的API.毕竟涉及到用户访问的安全,肯定不能让编程人员随意更改这些机制,复

Cocos2d-x优化中多线程并发访问

多线程并发访问在Cocos2d-x引擎中用的不是很多这主要是因为中整个结构设计没有采用多线程.源自于Objective-C的Ref对象需要使用AutoreleasePool进行内存管理AutoreleasePool是非线程安全的所有不推荐在子多线程中调用Ref对象的retain(). release()和autorelease()等函数.另外OpenGL上下文对象也是不支持线程安全的.但是有的时候我们需要异步加载一些资源例如加载图片纹理.声音的预处理和网络请求数据等.如果是异步加载图片纹理我们可

C#多线程安全访问控件,System.OutOfMemoryException异常

问题描述 一直找解决方案,今天发现博客园一个朋友写的C#多线程安全访问控件,http://www.cnblogs.com/slyzly/articles/2121436.htmlprivatevoidSetText(stringtext){//InvokeRequiredrequiredcomparesthethreadIDofthe//callingthreadtothethreadIDofthecreatingthread.//Ifthesethreadsaredifferent,itret

Linux上使用程序相对路径访问文件【转】

转自:http://blog.csdn.net/yinxusen/article/details/7444249 今天一个朋友问我这个问题,说为什么在Windows上跑得很好的应用程序,移植到Linux上后就读不到跟应用程序在同一文件夹下的文件呢,我说,这是linux和Windows在Work directory上设置的不同. 大家都知道,对于Windows而言,应用程序的默认工作目录就是应用程序所在的目录,它一般是不管应用程序是从哪个目录上下文启动的.那么在不更改工作目录的情况下,读文件使用相

运用多线程技术实现文件的快速搜索

从一名初学者到如今一名熟练的VC程序员,得益于VC知识库的帮助,一直想着该如何回报.现撰此文,一来略表心意,二来和VC爱好者交流. 操作系统一般都提供了文件搜索的功能,但采用的是顺序搜索,搜索效率很底.而且按此法编程十分烦琐,在目录层次很多时,往往不好处理.本文采用多线程技术实现文件的快速搜索,代码量很少,执行效率极高. 其基本思想其实很简单,就是找到一个目录就开辟一个线程,文件的话当然在线程内就处理了.这样实现了同步搜索,速度当然快起来了. 本文程序运行效果图 以下介绍VC具体实现: 一. 搜

Windows 8 Store Apps学习(22) 文件系统: 访问文件夹和文件,搜索本地文件

文件系统: 访问文件夹和文件, 通过 AQS 搜索本地文件 介绍 重新想象 Windows 8 Store Apps 之 文件系统 File Access - 访问文件夹和文件,以及获取文件的各种属性 Folder Access - 遍历文件夹时的一些特殊操作 Thumbnail Access - 获取文件的缩略图 AQS - 通过 AQS(Advanced Query Syntax)搜索本地文件 示例 1.演示如何访问文件夹和文件,以及如何获取文件的各种属性 FileSystem/FileAc

妙用win7任务管理器,找到进程所在文件

现在我们在日常使用电脑中,很多时候我们都会通过任务管理器来删除掉一些没用而又占流量的进程.那么我们怎么判断一个进程是不是有用的呢.通常我们都是通过平常对于这些程序的了解来判断的,而这篇文章是跟你分享一种简单的方法,让你比较轻松看懂任务管理器里面的进程. 1 打开任务管理器,一般按下Ctrl+Ait+Del就可以打开了.然后点击查看按钮,选择"选择列",如图: 2 找到里面的"镜像路径名称"以及"命令行"这两项,并勾选它们就可以了.如图: 3 以后