|
小技巧:使程序只启动一次
作 者: 于明俭
使程序只启动一次的方法有许多, 常见的方法有:
- 使用lock文件, 当运行程序时首先检查lock文件是否存在,
它的缺点是程序非正常退出时有可能残留下lock文件.
- 使用共享内存, 程序启动时检查共享内存中的标志
- 使用原子(Atom), 仅适用于X Window, 下面详细介绍.
原子是X Window中某种属性(Property)的名称. 它在X Server
中只有一个. 一个原子在某一时刻只能由一个窗口拥有. 程序
可以通过查询哪一个窗口拥有这一原子.
Window twin;
Atom atom = XInternAtom(display, "MY_ATOM", False);
if(twin = XGetSelectionOwner(display, atom) != None ){
printf("program already activated.\n");
exit(1);
}
XSetSelectionOwner(display, atom, window, CurrentTime);
|