

Golangで常駐プロセスにLinuxのTerminalからコマンド、または文字列を送ったとき受ける方法ありますか？

プロセス開始時にコマンドを受けることじゃなくて起動中で非同期にコマンドを受ける方法が知りたいです。


CC BY-SA 4.0
2022-11-11T08:01:21.933
92155
2022-12-02T12:45:33.633
55334
question
linux go
Golang常駐にコマンドを送る方法ありますか？


シグナルをハンドリングするという方法が考えられます。

[code]

    package main
    
    import (
        "fmt"
        "os"
        "os/signal"
        "syscall"
    )
    
    func main() {
        fmt.Printf("Process PID : %v\n", os.Getpid())
    
        sig := make(chan os.Signal, 1)
        signal.Notify(sig, syscall.SIGINT)
    
        s := <-sig
        fmt.Printf("Signal received: %s \n", s.String())
    }
    
    
[/code]

これを実行後すると、 `s := <-sig` の部分で待機します。  
別のターミナルから `kill -SIGINT {PID}` を実行してシグナルを送信するか、`Ctrl + C`
を押下すると、チャネルを受信し処理を続行します。

# 参考

  * [Go とシグナルの検出 - Qiita](https://qiita.com/TsuyoshiUshio@github/items/fca01ad0b6759a24a02f)
  * [Go by Example: Signals](https://oohira.github.io/gobyexample-jp/signals.html)


CC BY-SA 4.0
2022-12-02T12:45:33.633
92540
2022-12-02T12:45:33.633
14334
92155
answer