04
21

usermode helper-來自kernel的呼喚

博客來最近都在促銷Orielly的書,只要買足3本,就可享75折的優惠,所以我這次一口氣買了三本雖然之前看過但很想收藏的書,自從出社會後,幾乎每個月都會買個幾本技術相關的書籍典藏,雖然網路上都抓得到,但總覺的缺了一份質感,沒有翻書的感覺,就好像沒在看書

這次要介紹東西很簡單,但這種技巧很常見,不論是hotplug會是kernel init,都會發現這個函式的蹤影,當安裝plug&play裝置時,kernel會呼叫hotplug執行device setup script,而從kernel呼叫user space的API,就是user modehelper,簡單的程式我列如下

程式的重點在於envp和argv的設定,envp是環境設定的變數,而argv是user application的執行參數

  1. static int __init testmodule_init(void) 
  2. { 
  3.  
  4.  
  5. int ret;
  6.  
  7. char *envp[] = { 
  8. "HOME=/",
  9. "TERM=linux",
  10. "PATH=/sbin:/usr/sbin:/bin:/usr/bin",
  11. NULL,
  12. };
  13. char *argv[] = { 
  14. "/bin/ash",
  15. "-c",
  16. "echo 1 > /mnt/jffs2/aa.conf",
  17. NULL 
  18. };
  19.  
  20. if ((ret =call_usermodehelper(argv[0], argv, envp, /*UMH_WAIT_PROC*/1)) != 0) { 
  21. printk(KERN_ERR "user mode helper failed to run\n”);
  22. return 0;
  23. }
  24. static void __exit testmodule_exit(void)
  25. {
  26.  
  27. }

 

標籤: linux
評論: 0 | 引用: 0 | 閱讀: 6616
發表評論
暱 稱: 密 碼:
網 址: E - mail:
驗證碼: 驗證碼圖片 選 項:
頭 像:
內 容: