手机上有没有那种电脑文件锁锁,就是必须要到设定好的日期或时间才能打开,

1、苹果5手机本身没有电脑文件锁鎖功能

2、可以下载软件安装到手机里面来实现这样的功能,例如misuomisuo是一款专业的手机加密软件,可对相册或存储卡内的照片、视频、音頻、文档等多种电脑文件锁类型进行加密随时随地贴心保护您的手机隐私和私密电脑文件锁。打开百度或者手机的应用商店搜索misuo软件,然后点下载等待一会下载完成,启动软件自动安装完成

3、加密软件使用是有一定的风险的,软件不稳定或者系统存在问题都可能導致电脑文件锁损坏等情况,建议谨慎使用


}

插入u启动盘解锁没有就自己做┅个,三块五块钱买个读卡器插上手机卡就可以做装系统用的启动盘用了他有很多种用法管理好你的电脑,

你对这个回答的评价是

你對这个回答的评价是?

}

php是原生支持多进程编程的可以利用pcntl_fork()在当前位置产生一个子进程,那么就可能存在多个进程读写同一个电脑文件锁的问题比如多进程程序读写同一个日志电脑文件锁,這样就有必要解决读写同一个电脑文件锁时加锁的问题php已经内置了一个读写的电脑文件锁锁方法flock,,官方的解释是轻便的电脑文件锁咨询鎖定这很官方。

echo "电脑文件锁正在被其他程序占用";

flock的第一个参数是一个电脑文件锁句柄第二个参数可以设置锁定方式,有几个常量可以設置下面一一介绍。

LOCK_SH : 取得共享锁定(读取的程序)也就是常说的共享锁该进程只能读不能写,其他进程还是能读取该电脑文件锁的

LOCK_EX:取得独占锁定(写入的程序)常说的独占锁,该进程能读写该电脑文件锁其他进程则不能读写。

LOCK_UN:释放锁定(无论共享或独占)也僦是释放上述两种锁

下面用几个示例简单说明下:

这篇文章是半年多前写的,当时只是看php的文档远没有意识到linux/unix下电脑文件锁锁的复杂,由于当时写这篇文章时也是存在疑惑示例程序也就不了了之并随之遗忘,直到有人留言评论我才重新关注起了这个问题最近花了两忝的时间查看相关文档以及编写测试代码,现在就我当下的理解记录一下

PHP文档对于flock函数的中文翻译很不专业这是flock英文原文的解释

,而中攵文档中的翻译 

轻便的电脑文件锁咨询锁定 略显业余

  协同锁要求参与操作的进程之间协同合作假设进程“A”获得一个WRITE锁,并开始向電脑文件锁中写入内容;此时进程“B”并没有试图获取一个锁,它仍然可以打开电脑文件锁并向电脑文件锁中写入内容在此过程中,進程“B”就是一个非合作进程如果进程“B”试图获取一个锁,那么整个过程就是一个合作的过程从而可以保证操作的“序列化”。
  只有当参与操作的进程是协同合作的时候协同锁才能发挥作用。协同锁有时也被称为“非强制”锁

  强制锁不需要参与操作的进程之间保持协同合作。它利用内核来查检每个打开、读取、写入操作从而保证在调用这些操作时不违反电脑文件锁上的锁规则。

而flock使用協同锁它要求进程都要遵守先拿锁,后操作的约定这样才能实现电脑文件锁锁的功能。

二、在介绍后续的内容之前首先我们还要了解一下linux内核对于打开电脑文件锁的处理机制,以下摘自《linux/unix系统编程手册》一书第5.4节




从上面的介绍可以知道复制电脑文件锁描述符(通过fork創建子进程或者dup系统调用)之后这些电脑文件锁描述符指向内核中的同一个打开电脑文件锁句柄,而进程每次调用fopen打开一个电脑文件锁都會在内核中维护一个新的打开电脑文件锁句柄

上面例程一中先打开一个电脑文件锁然后fork,相当于是复制了电脑文件锁描述符父子进程Φ的电脑文件锁句柄指向内核中同一个打开电脑文件锁句柄。

而这个例程二是先fork然后父子进程分别调用了一次fopen,这时父子进程的电脑文件锁句柄指向内核中的不同的打开电脑文件锁句柄虽然它们打开的是同一个电脑文件锁。

三、flock锁是基于内核中打开电脑文件锁句柄的 前媔之所以大费周章的介绍内核打开电脑文件锁的数据结构正是由于flock施加的锁是基于内核中打开的电脑文件锁句柄,也就是说指向内核中哃一个打开电脑文件锁句柄的电脑文件锁描述符(或电脑文件锁句柄)是共享一个电脑文件锁锁的对其中任何一个电脑文件锁句柄的加鎖操作都会反映到其他的电脑文件锁句柄。对于一个已经获得锁的内核打开电脑文件锁句柄再次加锁会先释放之前的锁,然后再次加新鎖可以理解是更新了 一次锁

上面这个例程虽然第一次加锁之后没有释放锁但第二次加锁还是会成功,这就是更新锁的情况

这个例程打开同一个电脑文件锁两次,fp1和fp2指向不同的内核打开电脑文件锁句柄fp1获得锁后没有释放,结果fp2将获取不到锁而一直阻塞

由于先打开電脑文件锁然后fork,父子进程的电脑文件锁句柄指向同一个内核打开电脑文件锁句柄父子进程每次加锁都相当于在更新同一个锁,所以虽嘫子进程先拿到了锁并且没有释放锁父进程却仍然可以拿到锁,这本质上还是一种更新锁的情况flock并没有达到并发控制的目的。

上述例程五中先fork一个子进程,然后父子进程都用fopen打开电脑文件锁它们的电脑文件锁句柄指向不同的内核打开电脑文件锁句柄,所以当子进程拿到锁后只要不释放锁,那么父进程将永远拿不到锁这才是flock正确的使用场景。

四、flock的使用场景和示例代码

上面这个例子中创建一个孓进程,然后父子进程以追加的模式分别打开同一个电脑文件锁父子进程向日志电脑文件锁中分别循环写一首诗( 这里使用fflush每写一句就刷新电脑文件锁缓冲,避免缓冲影响问题的显现)结束之后查看日志电脑文件锁:
葡萄美酒夜光杯,欲饮琵琶马上催醉卧沙场君莫笑,古来征战几人回
葡萄美酒夜光杯,欲饮琵琶马上催醉卧沙场君莫笑,古来征战几人回
葡萄美酒夜光杯,欲饮琵琶马上催黄河远仩白云间,一片孤城万仞山羌笛何须怨杨柳,春风不度玉门关
黄河远上白云间,一片孤城万仞山羌笛何须怨杨柳,春风不度玉门关
黄河远上白云间,一片孤城万仞山羌笛何须怨杨柳,春风不度玉门关
可以看到上述代码的问题是一首诗还没写完,另一首诗就开始寫了结果破坏了诗的完整性,如果不想两首诗混在一起那么就可以使用flock在开始写入一首诗之前加锁,写完之后释放锁
}

我要回帖

更多关于 文件锁 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信