github.com/ggreg80/ketos@v0.0.0-20171109040536-049616f51ddb/testdata/dl/main.go (about)

     1  package main
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"github.com/rainycape/dl"
     7  )
     8  
     9  func main() {
    10  
    11  	libc, err := dl.Open("libc", 0)
    12  	if err != nil {
    13  		panic(err)
    14  	}
    15  	defer libc.Close()
    16  
    17  	var snprintf func([]byte, uint, string, ...interface{}) int
    18  	err = libc.Sym("snprintf", &snprintf)
    19  	if err != nil {
    20  		panic(err)
    21  	}
    22  
    23  	buf := make([]byte, 200)
    24  	snprintf(buf, uint(len(buf)), "hello %s!\n", "world")
    25  	s := string(buf[:bytes.IndexByte(buf, 0)])
    26  
    27  	fmt.Println(s)
    28  }