BCC小demo系列
实现效果:有文件打开时,打印hello world
bpf中常用bpf_trace_printk 来完成print操作,该函数会将需要打印的内容输出到trace_pipe中
BPF程序注入到内核hook点后,当hook的系统函数被调用时,BPF程序就会被执行。
测试时可以通过两种方式查看trace_pipe输出,为了简单,这里使用了第一种
- 监听trace_pipe文件
- golang读trace_pipe通道数据
测试程序效果
- 执行程序
go run hello.go
- 另外打开一个终端,执行
cat /sys/kernel/debug/tracing/trace_pipe
- 由于系统不断有do_sys_open的调用,可以看到不停地有Hello, World!打印出来
package main
import (
"fmt"
bpf "github.com/iovisor/gobpf/bcc"
"os"
)
import