User-space applications are, most of the time, called from within the user space by other applications. Without going deep into the details, let's see an example:
#include <linux/init.h> #include <linux/module.h> #include <linux/workqueue.h> /* for work queue */ #include <linux/kmod.h> static struct delayed_work initiate_shutdown_work; static void delayed_shutdown( void ) { char *cmd = "/sbin/shutdown"; char *argv[] = { cmd, "-h", "now", NULL, }; char *envp[] = { "HOME=/", "PATH=/sbin:/bin:/usr/sbin:/usr/bin", NULL, }; call_usermodehelper(cmd, argv, envp, 0); } static int __init my_shutdown_init( void ) { schedule_delayed_work(&delayed_shutdown...