linux 在核心模組呼叫應用層程式
阿新 • • 發佈:2018-12-07
核心模組程式碼
#include <linux/module.h> #include <linux/init.h> #include <linux/kernel.h> #include <linux/types.h> #include <linux/kmod.h> //需要呼叫的應用層程式 #define APPNAME "/sbin/app" static int __init test_init(void) { int ret; //初始話傳給引用層的引數 就相當於main(argc,argv[])函式中的argv argv[0]要為執行的程式 char *argv[]={APPNAME,"this is a test",NULL}; //開始執行 ret = call_usermodehelper(APPNAME,argv,NULL,UMH_WAIT_PROC); if(ret != 0) { printk("call failed\n"); return -1; } return 0; } static void __exit test_exit(void) { return; } module_init(test_init); module_exit(test_exit); MODULE_LICENSE("GPL");
應用層程式碼
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <string.h> int main(int argc,char *argv[]) { int fd = 0; fd = open("/test/abcd",O_RDWR|O_CREAT); if(fd < 0) { return -1; } write(fd,argv[1],strlen(argv[1])); close(fd); return 0; }