我必须编写一个程序,必须知道在该机器上运行的另一个自身实例,并与之通信,然后死掉.我想知道在Linux中是否有一种规范的方法.
我首先想到的是每一个程序执行时间编写包含进程的PID somewere一个文件,并查看该文件,但如果是该文件的"正确"的地方,叫什么名字?是否有更好或更"正确"的方式?
然后我必须沟通,说用户试图运行它,但由于还有另一个实例,它将移交作业并退出.我想过只发送一个信号,比如SIGUSR1,但这不允许我发送更多信息,比如用户执行第二个进程的X11显示.如何发送此信息?
该程序与Gtk链接,因此使用glib的解决方案是可以的.
Fre*_*Foo 10
将pid放在文件中是实现此目的的常用方法.对于守护进程("系统程序"),放置这样一个文件的常见位置是/var/run/PROGRAM.pid.对于用户程序,把隐藏在用户的主目录的PID文件(如果该方案也有配置文件,然后把两个配置文件和PID文件中的家目录的子目录).
使用Unix域套接字(也称为本地套接字)最常将信息发送到"主"实例.使用套接字,您将不需要pid文件(如果没有人监听套接字,则进程知道它是主服务器).