13 个解决方案
#1
文件锁。进程运行时新建一个文件,独占锁,如果第二次运行,open文件失败,进程退出。
共享内存,类似处理。
共享内存,类似处理。
#2
可以加锁一个特定文件来实现,如果特定文件已存在就表示已有实例。
不过要考虑程序非正常退出的情况。
也可以绑定某个socket端口。
也可以使用特定共享内存地址。
总之可以用任何全局的信息来实现。
不过要考虑程序非正常退出的情况。
也可以绑定某个socket端口。
也可以使用特定共享内存地址。
总之可以用任何全局的信息来实现。
#3
最经济的做法是创建一个信号量,pv操作就可以保证了。
#4
怎么才能用独占的方式打开一个文件,其他进程打开时失败??
open()用哪个标志位 O_EXCL,O_WRONLY,O_RDWR??????
open()用哪个标志位 O_EXCL,O_WRONLY,O_RDWR??????
#5
文件锁
#6
解决了,用别人的代码。。
#7
方法比较多,用信号灯或者其他的标示都可以解决
#8
任何内核对象
SOCKET, SEMAPHORE, MUTEX FILE DESCRIBER, SHARED MEMORY, FILE LOCK, .......................................................
SOCKET, SEMAPHORE, MUTEX FILE DESCRIBER, SHARED MEMORY, FILE LOCK, .......................................................
#9
mark
#10
楼主,把代码贴出来呀
#11
一般是开始运行程序把pid写入文件如:/var/run/server.pid,
先判断有没有文件如果有就把pid读出来,然后kill 。
先判断有没有文件如果有就把pid读出来,然后kill 。
#12
一般是开始运行程序把pid写入文件如:/var/run/server.pid,
先判断有没有文件如果有就把pid读出来,然后kill 。
========================================================
如果程序异常终止了,文件还存在。 其他进程使用了该pid,这样kill不是有问题了么?
先判断有没有文件如果有就把pid读出来,然后kill 。
========================================================
如果程序异常终止了,文件还存在。 其他进程使用了该pid,这样kill不是有问题了么?
#13
ps -aux 找进程名也可以
#1
文件锁。进程运行时新建一个文件,独占锁,如果第二次运行,open文件失败,进程退出。
共享内存,类似处理。
共享内存,类似处理。
#2
可以加锁一个特定文件来实现,如果特定文件已存在就表示已有实例。
不过要考虑程序非正常退出的情况。
也可以绑定某个socket端口。
也可以使用特定共享内存地址。
总之可以用任何全局的信息来实现。
不过要考虑程序非正常退出的情况。
也可以绑定某个socket端口。
也可以使用特定共享内存地址。
总之可以用任何全局的信息来实现。
#3
最经济的做法是创建一个信号量,pv操作就可以保证了。
#4
怎么才能用独占的方式打开一个文件,其他进程打开时失败??
open()用哪个标志位 O_EXCL,O_WRONLY,O_RDWR??????
open()用哪个标志位 O_EXCL,O_WRONLY,O_RDWR??????
#5
文件锁
#6
解决了,用别人的代码。。
#7
方法比较多,用信号灯或者其他的标示都可以解决
#8
任何内核对象
SOCKET, SEMAPHORE, MUTEX FILE DESCRIBER, SHARED MEMORY, FILE LOCK, .......................................................
SOCKET, SEMAPHORE, MUTEX FILE DESCRIBER, SHARED MEMORY, FILE LOCK, .......................................................
#9
mark
#10
楼主,把代码贴出来呀
#11
一般是开始运行程序把pid写入文件如:/var/run/server.pid,
先判断有没有文件如果有就把pid读出来,然后kill 。
先判断有没有文件如果有就把pid读出来,然后kill 。
#12
一般是开始运行程序把pid写入文件如:/var/run/server.pid,
先判断有没有文件如果有就把pid读出来,然后kill 。
========================================================
如果程序异常终止了,文件还存在。 其他进程使用了该pid,这样kill不是有问题了么?
先判断有没有文件如果有就把pid读出来,然后kill 。
========================================================
如果程序异常终止了,文件还存在。 其他进程使用了该pid,这样kill不是有问题了么?
#13
ps -aux 找进程名也可以