linux 下一个程序,想在不停止运行的情况下通过命令行比如输入 changeconfig -f 1.txt ,接受到 1.txt 。是利用管道、信号还是其他什么东西......
1
miniliuke OP 各种后台程序是怎么接收这些值的啊?
|
2
ech0x 2018-08-24 22:07:28 +08:00
监听一个本地的端口,然后通过端口传数据?
|
4
Cbdy 2018-08-24 22:14:41 +08:00 via Android
端口,信号都可以
|
5
miniliuke OP 其实就是守护进程的通信问题・_・?比如说 docker 的守护进程是怎么获得 docker exec 后面的参数的......
|
6
veelog 2018-08-24 22:18:14 +08:00 via iPhone
你这种方式得打开文件读取,另外
cat 1.txt|changeconfig 这种方式,通过管道,就从标准输入读取 |
8
miniliuke OP @veelog 我只想获得"1.txt"这个字符串就行,关键是守护进程怎么获得这个参数?现在只能想到 socket 和管道,不知道到底其他人是怎么实现的,比如 docker 的 docker exec 命令
|
9
CSM 2018-08-24 22:23:05 +08:00
Unix domain socket 不需要端口号
|
11
billlee 2018-08-24 23:01:15 +08:00
双向通信用 unix domain socket, 单向通信用 FIFO
|
13
zhanglintc 2018-08-24 23:42:03 +08:00
一般监听信号 1, 也就是 SIGHP, 这个信号好像本来就是被用来做 reload 的. 监听到这个信号后绑定的函数去读取指定的文件, 你想要传进去的内容提前写到这个文件里. 感觉一般都这么干吧.
|
14
ysc3839 2018-08-24 23:51:44 +08:00 via Android
关键词:进程间通信 Inter-process communication
|
15
miniliuke OP @zhanglintc 有可能,比较实用
|