所以我正在eBPF上进行开发。
我需要使用unistd.h标头,因为我想使用睡眠功能。
但是,我意识到当我输入
#include <unistd.h>
这些标题不包括在内,我会收到一条错误消息:
warning : implicit delcaration of function 'sleep' is invalid in C99 [-Wimplicit-Function-declaration] sleep (1);
我以为我在代码的其他地方做错了什么,所以我试图在教程的示例中包含该标头,但这样做也不起作用。
因此,从下面所附的代码中,我尝试将消息发布之前延迟一秒钟。
有人有同样的问题,并且以某种方式找到了在c代码中使用该标头的方法吗?
如果有人可以帮助我,我将非常感激!
感谢一百万!
我尝试更新内核并将所有头文件移至ёusr/ local /includeё 目录,因为它在互联网上说这是编译器首先检查标头但仍然无法正常工作的地方。
所以这是我尝试但无法正常工作的代码。
from bcc import BPF
BPF(text = 'int kprobe__sys_clone(void *ctx)
{
#include <unistd.h>
sleep(1);
bpf_trace_printk("Hello World!\\n");
return 0;
}
').trace_print()
答案 0 :(得分:0)
我想您想要的是https://github.com/iovisor/bcc/blob/master/examples/networking/xdp/xdp_drop_count.py 在该代码中搜索“睡眠”。
正如@Ctx所说,该函数在触发克隆syscall时发生。那里没有sleep()的意义,您也无法在调用sleep()的内核中做到这一点。
您可能想了解上面的示例,以了解它如何设置打印内容的间隔。希望有帮助。