我可以使用emergency_restart()吗?
或者如果我使用kill(1,SIGTERM);
我需要包含“signal.h”,但它似乎无法在无线驱动程序中使用
答案 0 :(得分:0)
正如Basile所说,kill()是一个用户空间系统调用,所以你不能在内核模块中使用它。无论如何,这是完成你想要做的事情的粗暴方式。除非你有理由在kernel_restart()上使用emergency_restart(),否则我会使用后者。您可以在reboot.h中找到您的选项。
顺便说一句,这是在你的系统中打开一个安全漏洞。由于驱动程序正在解释数据包以确定是否需要重新启动,因此OS无法帮助确定该源是否有权在您的系统上执行此类操作。使用具有相应权限的用户空间守护程序来重启计算机可能会更好,并且可以充当身份验证代理和重新启动代理,而不是在驱动程序中执行此操作。