天天看點

linux觸發信号,我該如何讓我的linux服務觸發我的信号?

pid_t pid, sid;

pid = fork();

if (pid < 0) {

exit(EXIT_FAILURE);

}

if (pid>0) {

exit(EXIT_SUCCESS);

}

umask(0);

sid = setsid();

if (sid < 0) {

exit(EXIT_FAILURE);

}

if ((chdir("/")) < 0) {

exit(EXIT_FAILURE);

}

close(STDIN_FILENO);

close(STDOUT_FILENO);

close(STDERR_FILENO);

while (1) {

????????

//sleep(10);

}

exit(EXIT_SUCCESS);

會是什麼做的是等待我的信号,當它接收它做一些任務,然後再等待我的下一個信号。

我會發送我的信号(或其他)從我的c + +應用程式運作在同一台機器。看起來像兩個應用程式之間的信号機制。但在這種情況下,一個是Linux服務,我不知道該服務如何等待我的信号。

我怎麼能做到這一點?我有什麼選擇?

謝謝。

注意:“信号”一詞造成混淆。我不打算在技術上使用這個詞。我的意思是我需要從我的cpp應用程式中與我的linux服務進行交流。

注2:使用信号是沒有用的,因為在其處理程式中幾乎做任何事情都是不安全的,而我需要做很多事情。 (我不知道我是否可以啟動一個線程,至少!)

+0

你是什麼意思的“信号”呢?你的“伺服器”應該是做什麼的?在同一個系統上的兩個程序之間的通信隻是正常的[程序間通信](http://en.wikipedia.org/wiki/Inter-process_communication),一個程序在背景運作并不重要。 –

+0

['sigwait'](http://linux.die.net/man/3/sigwait),如果你真的意味着信号 –

+0

我不特别指任何事情。隻是我想從我的cpp應用程式中與我的linux服務進行通信。 –