V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
miniliuke
V2EX  ›  问与答

命令行给后台程序传值

  •  
  •   miniliuke · 2018-08-24 21:58:12 +08:00 via Android · 1831 次点击
    这是一个创建于 2290 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    cat 1.txt|changeconfig

    这种方式,通过管道,就从标准输入读取
    miniliuke
        7
    miniliuke  
    OP
       2018-08-24 22:18:39 +08:00 via Android
    @Cbdy 信号好像有两个可以自定义的,但是传递不了数据...
    miniliuke
        8
    miniliuke  
    OP
       2018-08-24 22:21:57 +08:00 via Android
    @veelog 我只想获得"1.txt"这个字符串就行,关键是守护进程怎么获得这个参数?现在只能想到 socket 和管道,不知道到底其他人是怎么实现的,比如 docker 的 docker exec 命令
    CSM
        9
    CSM  
       2018-08-24 22:23:05 +08:00
    Unix domain socket 不需要端口号
    miniliuke
        10
    miniliuke  
    OP
       2018-08-24 22:34:54 +08:00 via Android
    @CSM 的确不错,守护进程用这个可还行......
    billlee
        11
    billlee  
       2018-08-24 23:01:15 +08:00
    双向通信用 unix domain socket, 单向通信用 FIFO
    choury
        12
    choury  
       2018-08-24 23:29:13 +08:00
    @miniliuke #8 进程间通信方案就那么几种,挨个看下能不能符合你要求呗
    zhanglintc
        13
    zhanglintc  
       2018-08-24 23:42:03 +08:00
    一般监听信号 1, 也就是 SIGHP, 这个信号好像本来就是被用来做 reload 的. 监听到这个信号后绑定的函数去读取指定的文件, 你想要传进去的内容提前写到这个文件里. 感觉一般都这么干吧.
    ysc3839
        14
    ysc3839  
       2018-08-24 23:51:44 +08:00 via Android
    关键词:进程间通信 Inter-process communication
    miniliuke
        15
    miniliuke  
    OP
       2018-08-25 09:15:51 +08:00 via Android
    @zhanglintc 有可能,比较实用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1037 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:03 · PVG 03:03 · LAX 11:03 · JFK 14:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.