命令行给后台程序传值

2018-08-24 21:58:12 +08:00
 miniliuke

linux 下一个程序,想在不停止运行的情况下通过命令行比如输入 changeconfig -f 1.txt ,接受到 1.txt 。是利用管道、信号还是其他什么东西......

1688 次点击
所在节点    问与答
15 条回复
miniliuke
2018-08-24 22:04:32 +08:00
各种后台程序是怎么接收这些值的啊?
ech0x
2018-08-24 22:07:28 +08:00
监听一个本地的端口,然后通过端口传数据?
miniliuke
2018-08-24 22:10:27 +08:00
@ech0x 每个需要这样的程序开个端口,不太现实吧......
Cbdy
2018-08-24 22:14:41 +08:00
端口,信号都可以
miniliuke
2018-08-24 22:17:47 +08:00
其实就是守护进程的通信问题・_・?比如说 docker 的守护进程是怎么获得 docker exec 后面的参数的......
veelog
2018-08-24 22:18:14 +08:00
你这种方式得打开文件读取,另外

cat 1.txt|changeconfig

这种方式,通过管道,就从标准输入读取
miniliuke
2018-08-24 22:18:39 +08:00
@Cbdy 信号好像有两个可以自定义的,但是传递不了数据...
miniliuke
2018-08-24 22:21:57 +08:00
@veelog 我只想获得"1.txt"这个字符串就行,关键是守护进程怎么获得这个参数?现在只能想到 socket 和管道,不知道到底其他人是怎么实现的,比如 docker 的 docker exec 命令
CSM
2018-08-24 22:23:05 +08:00
Unix domain socket 不需要端口号
miniliuke
2018-08-24 22:34:54 +08:00
@CSM 的确不错,守护进程用这个可还行......
billlee
2018-08-24 23:01:15 +08:00
双向通信用 unix domain socket, 单向通信用 FIFO
choury
2018-08-24 23:29:13 +08:00
@miniliuke #8 进程间通信方案就那么几种,挨个看下能不能符合你要求呗
zhanglintc
2018-08-24 23:42:03 +08:00
一般监听信号 1, 也就是 SIGHP, 这个信号好像本来就是被用来做 reload 的. 监听到这个信号后绑定的函数去读取指定的文件, 你想要传进去的内容提前写到这个文件里. 感觉一般都这么干吧.
ysc3839
2018-08-24 23:51:44 +08:00
关键词:进程间通信 Inter-process communication
miniliuke
2018-08-25 09:15:51 +08:00
@zhanglintc 有可能,比较实用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/483016

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX