簡體   English   中英

使用 cgo 掛鈎系統調用“fork”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM