回答編集履歴

1

追記

2022/10/03 11:22

投稿

otn
otn

スコア84423

test CHANGED
@@ -11,8 +11,18 @@
11
11
  `-n`を付けると「起動中ならコマンドを実行しない」になります。
12
12
 
13
13
  手動での実行時も常に`flock`経由で実行します。
14
- 起動済みで実行中止にした時にメッセージを出したいならシェルスクリプトにしたほうがいいでしょうね。
15
14
 
15
+ ## 追記
16
+ Pythonのみでやる方法。
17
+ ```Python
18
+ import fcntl
16
19
 
20
+ f = open(__file__,"r")
21
+ try:
22
+ fcntl.flock(f.fileno(), fcntl.LOCK_EX|fcntl.LOCK_NB)
23
+ except BlockingIOError:
24
+ print("重複起動")
25
+ exit()
26
+ ```
27
+ (プロセスが終了するか、`f`をクローズするとロックが解除されます。あるいは、`LOCK_UN`を指定して`flock`を再度呼び出すか)
17
28
 
18
-