chiamate di sistema di Linux vengono utilizzati direttamente senza caricare una biblioteca, esattamente come dipende da quale sistema di chiamata che si desidera eseguire. Si dovrebbe fare riferimento al riferimento const delle chiamate di sistema a https://golang.org/pkg/syscall/
userò il getpid syscall Linux() come esempio, che restituisce l'ID di processo del processo chiamante (il nostro processo, in questo caso).
Secondo il nostro riferimento (link qui sotto), in Go questa chiamata di sistema ha un valore di 39 uintptr di, ed è elencato come SYS_GETPID. Nel tuo codice puoi definire un const, ad es. sysGetPid, con un valore di 39.
package main
import (
"fmt"
"syscall"
)
func main() {
pid, _, _ := syscall.Syscall(39, 0, 0, 0)
fmt.Println("process id: ", pid)
}
I catturare il risultato della chiamata di sistema in pid, questa chiamata particolare restituisce nessun errore per cui uso identificatori in bianco per il resto dei rendimenti. Syscall restituisce due uintptr e 1 errore.
Come si può vedere che posso anche solo passare 0 per il resto degli argomenti della funzione, come io non ho bisogno di passare gli argomenti a questa chiamata di sistema.
La firma funzione è: func Syscall (trappola uintptr, nargs uintptr, a1 uintptr, a2 uintptr, a3 uintptr) (r1 uintptr, r2 uintptr, err Errno)
Per le altre chiamate di sistema è necessario fare riferimento a un sistema riferimento di chiamata per Linux, ad es http://man7.org/linux/man-pages/man2/syscalls.2.html, per scoprire quali argomenti è necessario passare e cosa restituisce.
È possibile trovare questo pacchetto utile: https://github.com/rainycape/dl –
@TimCooper Si noti che "gopkgs.com" è irraggiungibile e [è un NXDOMAIN] (http://centralops.net/co/ DomainDossier.aspx? addr = gopkgs.com & dom_dns = true). Quindi è sicuro assumere che il sito è morto. –
@MarkusWMahlberg: il pacchetto può ancora essere afferrato con 'go get -u github.com/rainycape/dl'. –