我希望阻止自定義用戶信號的進程,並且當信號到達時它應該喚醒shell腳本中的等待進程?只需編寫一些可以處理的步驟?shell腳本中的信號處理
2
A
回答
0
這不是100%清楚你想做什麼,但它聽起來像你基本上想要一個shell-scrip「鍵盤記錄器」在後臺偵聽並根據事情采取行動。如果我是正確的,我不會問爲什麼......如果我不是我道歉;-)
如果你想去核心,你可以瞭解/ dev/input/event *文件在文件系統中以及如何遵循它們。或者你可以看看本教程爲創建一個鍵盤記錄器和洛: http://www.slideshare.net/rmorrill/creating-a-keystroke-logger-in-unix-shell-scripting
最後,如果你真的只是想安裝和去,你可以嘗試安裝這樣的: http://www.justhackitnow.com/2012/03/keylogger-for-linux.html
1
如果您希望將信號發送信號是17號,那麼你可以使用:在接收到信號時
trap ":" 17
sleep 1000000
trap 17
# ...what you want to happen after the signal is received...
第一trap
命令將執行命令引用(:
)。 :
命令什麼也不做。但是,您不能使用trap "" 17
,因爲這意味着'忽略信號17',這與您想要的相反。
sleep 1000000
是一種長時間不使用CPU資源而無所作爲的方法。
第二個trap
取消信號17的信號處理,恢復默認行爲。
之後,你可以把任何你想要執行的代碼一旦收到信號。
而不是使用sleep
的,您可能希望創建和使用程序,pause
,其無限期等待(而不是風險sleep
信號之前喚醒接收)。你可以使用這個簡單的程序:
#include <unistd.h>
int main(void)
{
pause();
return(0);
}
作爲一個細節點,返回通常不會被執行;該信號通常會強制程序在pause()
以errno == EINTR
返回之前終止。
相關問題
- 1. shell腳本中的文本處理
- 2. Shell腳本錯誤處理
- 3. 「異常處理」 shell腳本
- 4. 批處理腳本到Shell腳本
- 5. shell腳本中的異常處理?
- 6. 在Emacs shell和Cygwin下處理信號
- 7. sesu - 在shell腳本中處理密碼
- 8. 在shell腳本中處理FTP錯誤
- 9. 在shell腳本中處理錯誤
- 10. 使用shell腳本處理文本?
- 11. 文本處理(換行)在shell腳本
- 12. 信號處理
- 13. UNIX中的信號處理
- 14. C++中的信號處理
- 15. Go中的信號處理
- 16. Unix中的信號處理
- 17. Windows中的信號處理
- 18. awk shell腳本用雙引號處理csv文件
- 19. Shell腳本處理隱藏文件
- 20. shell腳本來處理文件
- 21. 恢復停止shell腳本處理
- 22. 將批處理腳本轉換爲Shell
- 23. 轉換shell腳本,Windows批處理
- 24. 通過sqlplus處理shell腳本
- 25. 轉換的Windows批處理腳本的Linux Shell腳本
- 26. shell腳本,子shell,子腳本,管道 - (?)WEIRD CTRL + C信號傳播
- 27. 如何處理mini-shell中的Ctrl + Z信號。 C
- 28. SIGCHLD信號處理
- 29. MPI信號處理
- 30. shell腳本:執行中的單引號
你需要的命令是'trap'。這是一個shell內置命令。搜索「shell陷阱信號」以查找大量教程。 –