2015-12-15 6 views
1

с os/signal предназначен только для обработки входящих сигналов. Я спрашиваю, есть ли способ отправки сигналов другим процессам?Отправить сигнал другому процессу

Редактировать: Процесс, который я хочу сменить, - nginx. Мой Go приложение должно прослушивать несколько событий, а затем отправить SIGHUP в Nginx, чтобы перезагрузить его конфигурации

+0

Возможный дубликат http://stackoverflow.com/questions/9366550/go-inter-process-communication – KeylorSanchez

ответ

4

Если вы создали процесс с os.StartProcess или exec.Command вы можете использовать Process.Signal метод:

cmd := exec.Command("CmdPath", "-param1", param1) 
cmd.Process.Signal(signal) 

Для внешний процесс вы должны знать, что это идентификатор процесса (PID), а затем вызвать, например:

syscall.Kill(pid,syscall.SIGHUP) 

сигнала является стандарт UNIX «убить» системный вызов, если вы знаете PID процесса, вы можете просто сделать системный вызов с https://golang.org/pkg/syscall/#Kill

+0

Другой процесс не запускается моим приложением Go. Это независимо начато – soupdiver

+0

Знаете ли вы processId? Вы должны найти его в списке процессов или в файле ngnix.pid - и сделать syscall.Signal (ngnixPid, SIG_HUP) – Oleg

+0

misspelling: syscall.Kill (pid, syscall.SIGHUP) ofcourse – Oleg

Смежные вопросы