Was Sie wahrscheinlich wollen, ist executing a userspace function. Diese SE-Antwort enthält eine Verknüpfung zu einem IBM-Artikel mit einem Beispiel-Userspace-Prozess, der vom Kernel aufgerufen wird. Die Suchbegriffe, die Sie verwenden sollten, sind "usermodehelper" und "usermode helper".
Im Kern finden Sie unter:
[email protected]:~/linux-2.6/linux-2.6$ find . -type f | xargs grep "usermode.helper"
./kernel/cgroup.c: /* Drop the lock while we invoke the usermode helper,
./kernel/kmod.c: /* CLONE_VFORK: wait until the usermode helper has execve'd
./kernel/kmod.c: * call_usermodehelper_setup - prepare to call a usermode helper
./drivers/block/drbd/drbd_int.h:extern char usermode_helper[];
./drivers/block/drbd/drbd_nl.c: char *argv[] = {usermode_helper, cmd, mb, NULL };
./drivers/block/drbd/drbd_nl.c: dev_info(DEV, "helper command: %s %s %s\n", usermode_helper, cmd, mb);
./drivers/block/drbd/drbd_nl.c: ret = call_usermodehelper(usermode_helper, argv, envp, UMH_WAIT_PROC);
./drivers/block/drbd/drbd_nl.c: usermode_helper, cmd, mb,
./drivers/block/drbd/drbd_nl.c: usermode_helper, cmd, mb,
./drivers/block/drbd/drbd_nl.c: char *argv[] = {usermode_helper, cmd, tconn->name, NULL };
./drivers/block/drbd/drbd_nl.c: conn_info(tconn, "helper command: %s %s %s\n", usermode_helper, cmd, tconn->name);
./drivers/block/drbd/drbd_nl.c: ret = call_usermodehelper(usermode_helper, argv, envp, UMH_WAIT_PROC);
./drivers/block/drbd/drbd_nl.c: usermode_helper, cmd, tconn->name,
./drivers/block/drbd/drbd_nl.c: usermode_helper, cmd, tconn->name,
./drivers/block/drbd/drbd_main.c:char usermode_helper[80] = "/sbin/drbdadm";
./drivers/block/drbd/drbd_main.c:module_param_string(usermode_helper, usermode_helper, sizeof(usermode_helper), 0644);
./drivers/block/drbd/drbd_main.c: * currently blocked waiting for that usermode helper to
./security/keys/request_key.c: * Initialise a usermode helper that is going to have a specific session
./security/keys/request_key.c: * Clean up a usermode helper with session keyring.
./security/keys/request_key.c: * Call a usermode helper with a specific session keyring.
Es ist im Allgemeinen eine schlechte schlechte schlechte Idee, Benutzerraumbefehle vom Kern zu benennen :) – favoretti
'system()' im Kern zu verwenden ist eine schlechte Idee. Aber es ist kein guter Grund, die Frage abzustimmen. Sie können erklären, warum er das vermeiden sollte und welche Alternativen es gibt. _Es ist nur meine Meinung_ – deepmax
'Ich möchte System() -Funktion von stdlib.h in meinem c-Code verwenden. Ich arbeite gerade an der Kernel-Programmierung. Es ist wirklich eine sehr schlechte Idee !! , auch wenn es überraschend funktioniert, und trotzdem ist Ihr System nicht abgestürzt. Versuchen Sie, irgendwelche Debugging-Meldungen zu wiederholen? Wenn das der Fall ist, benutze [printk()] (http://www.makelinux.net/books/lkd2/ch18lev1sec3) und dmesg !! –