[英]Why I call fork() in C but make sys_clone() syscall instead? Why not sys_fork() syscall?
[英]using cgo to hook syscall “fork”
我正在尝试使用 Go 在 Linux 中挂钩 fork 系统调用。
package main
/*
#include <unistd.h>
*/
import "C"
import (
"fmt"
"os"
"github.com/rainycape/dl"
)
func main() {}
//export fork
func fork() C.pid_t {
lib, err := dl.Open("libc", 0)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer lib.Close()
var old_fork func() C.pid_t
lib.Sym("fork", &old_fork)
return old_fork()
}
当我作为LD_PRELOAD
编译和运行时,会发生恐慌
panic: reflect.MakeFunc: value of type `int32` is not assignable to type main._Ctype_int
您应该设置一些指令来运行它。 请查看其官方文档。 使用 cgo - Golang 官方文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.