基本上,我试图用 Go 函数替换 C 程序中的 pread。我已经让大部分结构正常工作,但我不知道如何用所需的字节填充缓冲区参数 (buf unsafe.Pointer)。
daemon.c 的一部分:
static int preadShim(int fd, void *buf, size_t count, off_t offset) {
//return pread(fd, buf, count, offset);
return ReadOver(fd, buf, count, offset);
}
在 Golang 文件中:
package main
import "C"
import "fmt"
import "unsafe"
//export ReadOver
func ReadOver(fd C.int, buf unsafe.Pointer, count C.int, offset C.int) C.int{
fmt.Println("ReadOver got called")
newBuf := []byte("injected bytes")
//TODO: copy newBuf over buf
return count
}
另一个 Golang 文件:
package main
// #include "daemon.c"
import "C"
import "fmt"
func main() {
//Start C program
C.start()
}
有什么建议么?我什么都没试过,我的想法都没有了。
慕码人2483693
相关分类