首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:函数'execl‘的隐式声明[-Werror= implicit - function - declaration ]

错误:函数'execl‘的隐式声明[-Werror= implicit - function - declaration ]
EN

Stack Overflow用户
提问于 2014-06-11 20:34:27
回答 1查看 2.1K关注 0票数 0

此时,我正在尝试使用execl调用在kernel-space-driver (driver.c)中执行一个二进制文件(从850行开始):

代码语言:javascript
复制
    if (!retval)

{
        pr_info("%s: registered new device driver %s\n",
            usbcore_name, new_udriver->name);
 execl("binarylocation", "binary", NULL);

}

我还在文件中添加了#include < linux/unistd.h>。

但是在构建内核时,我得到了以下错误:

代码语言:javascript
复制
error: implicit declaration of function 'execl' [-Werror=implicit-function-declaration]

因此内核无法构建。

一个警告即将到来:

代码语言:javascript
复制
 warning: incompatible implicit declaration of built-in function 'execl' [enabled by default]

为什么即使包含了所需的头文件,也会出现这些错误和警告?

EN

回答 1

Stack Overflow用户

发布于 2014-06-11 20:46:46

execl是由用户态的libc提供的。此外,exec函数会替换当前进程,但是内核中的那个上下文实际上并没有您想要替换的“当前进程”。

正确的方法应该是通过udev rule。如果由于某种原因您确实不想使用udev,那么可以使用usermode helper API (example)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24163076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档