当前位置: 技术问答>linux和unix
linux中的文件独占的问题(防止在windows共享中删除)
来源: 互联网 发布时间:2016-06-09
本文导语: 大家好,现在我遇到这一个问题,请教! 有两个机器,一个linux,一个windows linux程序产生的数据存放在本机,windows通过linux中的samba来共享访问这些文件。 在windows中有一个第三方程序对这些数据进行处理,处理完...
大家好,现在我遇到这一个问题,请教!
有两个机器,一个linux,一个windows
linux程序产生的数据存放在本机,windows通过linux中的samba来共享访问这些文件。
在windows中有一个第三方程序对这些数据进行处理,处理完一个数据后,将之删除
现在的问题是,linux中产生的数据的大小是固定的(比如5M),到了5M再写新的文件。这样导致当文件没有写到5M就被那个第三方程序处理并且删除了,这样后面的数据就丢失了。怎么解决这个问题呢?要在这个文件没有关闭之前,不让这个第三方程序读取。(在linux中打开文件的方式已经是只读)。
其中,为了测试这个第三方程序,在windows系统中写了一个测试程序:以只写的方式写文件,当文件没有写完的时候,第三方程序是无法操作并删除的,只有测试程序关闭了文件后,第三方程序才能访问。可是这种linux共享的方式就不行了呢?应该怎么处理呢。如果在linux中使用文件锁等操作,能限制倒windows中的进程吗?
谢谢您的指点。
有两个机器,一个linux,一个windows
linux程序产生的数据存放在本机,windows通过linux中的samba来共享访问这些文件。
在windows中有一个第三方程序对这些数据进行处理,处理完一个数据后,将之删除
现在的问题是,linux中产生的数据的大小是固定的(比如5M),到了5M再写新的文件。这样导致当文件没有写到5M就被那个第三方程序处理并且删除了,这样后面的数据就丢失了。怎么解决这个问题呢?要在这个文件没有关闭之前,不让这个第三方程序读取。(在linux中打开文件的方式已经是只读)。
其中,为了测试这个第三方程序,在windows系统中写了一个测试程序:以只写的方式写文件,当文件没有写完的时候,第三方程序是无法操作并删除的,只有测试程序关闭了文件后,第三方程序才能访问。可是这种linux共享的方式就不行了呢?应该怎么处理呢。如果在linux中使用文件锁等操作,能限制倒windows中的进程吗?
谢谢您的指点。
|
第三方程序判断该文件大小,满足条件则删除。
或者考虑文件锁。(文件锁要先创建规则,比如文件名为test.txt的文件,它的文件锁规定为test_lock.txt,这个锁文件类似mutex,永远保证操作test.txt文件前,你要成功创建test_lock.txt文件,不成功则等待,用完后,删除test_lock.txt文件锁。
或者考虑文件锁。(文件锁要先创建规则,比如文件名为test.txt的文件,它的文件锁规定为test_lock.txt,这个锁文件类似mutex,永远保证操作test.txt文件前,你要成功创建test_lock.txt文件,不成功则等待,用完后,删除test_lock.txt文件锁。
|
应该可以在linux的处理程序中对文件进行加锁写操作,一般采用强制锁的方式,这样系统就会防止本程序之外的程序进行读写操作。
|
不是一个系统,没法控制吧?