用mkdir实现互斥操作可行吗?
看到一些资料说,unix下面的mkdir是原子的,也就是互斥的。
所以想用这个命令来解决shell程序的多次启动问题。
具体思路如下,
mkdir /home/test/temp
if[ $? -gt 0 ]; then
成功
else
已经启动了失败
fi
如果同时启动shell程序,只有一个能mkdir成功
这种思路有什么问题吗?多谢大家探讨啊。
[解决办法]
不确定mkdir是原子的
从网上搜了下
http://bbs.chinaunix.net/archiver/tid-690239-page-4.html
[解决办法]
trap "rmdir /tmp/lock" 0
方便一些吧,后续shell可以随时终止
而不需要在每个exit之前,都显式调用一下rmdir
[解决办法]
flock锁是基于文件的,会随进程的终止而自动释放