2017-09-01 5 views
1

からパラメータとして文字列の配列を渡す私は1つのC関数を持っている:は、C関数に行く

int cgroup_change_cgroup_path(const char * path, pid_t pid, const char *const controllers[]) 

私はCGO使用することにより、外出先の言語でそれを呼びたいです。 3番目のパラメータを文字列のC配列を受け入れて渡す方法。

答えて

3

cヘルパー関数を使用して配列を構築し、使用することができます。ここで

は同じ問題を解決する:ジョン・バーハム

によって

// C helper functions: 

static char**makeCharArray(int size) { 
     return calloc(sizeof(char*), size); 
} 

static void setArrayString(char **a, char *s, int n) { 
     a[n] = s; 
} 

static void freeCharArray(char **a, int size) { 
     int i; 
     for (i = 0; i < size; i++) 
       free(a[i]); 
     free(a); 
} 

// Build C array in Go from sargs []string 

cargs := C.makeCharArray(C.int(len(sargs))) 
defer C.freeCharArray(cargs, C.int(len(sargs))) 
for i, s := range sargs { 
     C.setArrayString(cargs, C.CString(s), C.int(i)) 
} 

golangnutsポスト

関連する問題