Articles of 去

使用golang的可用无线networking列表(在Linux下)

我想获得在Linux操作系统下运行的Go程序中可用的无线networking列表。 使用iwlist从Linux命令行获取这些信息是相当容易的,但是我真的希望在Go中本地完成这些信息。 任何想法应该使用哪个包? 谢谢。

我怎样才能用go1.6.2构buildlinux 32位版本

有没有GOARCH和GOOS值的组合,我可以设置为了构buildELF 32位二进制?

如何启用docker的udev同步成功?

我已经从这个站点下载并安装了静态连接的docker 1.6.1 ,并在RHEL 7.1上运行它: [root@localhost bin]# ./docker -d WARN[0000] Udev sync is not supported. This will lead to unexpected behavior, data loss and errors INFO[0000] +job init_networkdriver() INFO[0000] +job serveapi(unix:///var/run/docker.sock) INFO[0000] Listening for HTTP on unix (/var/run/docker.sock) INFO[0000] -job init_networkdriver() = OK (0) INFO[0000] Loading containers: start. INFO[0000] Loading containers: done. INFO[0000] docker daemon: 1.6.1 […]

从Go调用setns返回EINVAL mnt名称空间

C代码工作正常,正确地进入命名空间,但Go代码似乎总是从setns调用返回EINVAL进入mnt命名空间。 我已经在Go 1.2,1.3和当前技巧中尝试了许多置换(包括embeddedC代码和外部.so )。 单步setns gdb中的代码表明,这两个序列都在libc以完全相同的方式调用setns (或者在我看来)。 我已经煮了什么似乎是下面的代码问题。 我究竟做错了什么? build立 我有一个用于启动快速bu​​sybox容器的shell别名: alias startbb='docker inspect –format "{{ .State.Pid }}" $(docker run -d busybox sleep 1000000)' 运行这个之后, startbb将启动一个容器并输出它的PID。 lxc-checkconfig输出: Found kernel config file /boot/config-3.8.0-44-generic — Namespaces — Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: missing Network namespace: enabled Multiple /dev/pts instances: […]

主进程从systemd启动时不能分离subprocess

我想生成长时间运行的subprocess,在主进程重启/死亡时生存下来。 从terminal运行时,这工作正常: $ cat exectest.go package main import ( "log" "os" "os/exec" "syscall" "time" ) func main() { if len(os.Args) == 2 && os.Args[1] == "child" { for { time.Sleep(time.Second) } } else { cmd := exec.Command(os.Args[0], "child") cmd.SysProcAttr = &syscall.SysProcAttr{Setsid: true} log.Printf("child exited: %v", cmd.Run()) } } $ go build $ ./exectest ^Z [1]+ […]

在Alpine Linux Docker上找不到安装的Go二进制文件

我有一个Go二进制文件,我试图在Alpine Docker镜像上运行。 这适用于Docker Go二进制文件。 docker run -it alpine:3.3 sh apk add –no-cache curl DOCKER_BUCKET=get.docker.com DOCKER_VERSION=1.9.1 curl -fSL "https://${DOCKER_BUCKET}/builds/Linux/x86_64/docker-$DOCKER_VERSION" -o /usr/local/bin/docker chmod +x /usr/local/bin/docker docker help Usage: docker [OPTIONS] COMMAND [arg…] … 但是,对于我想要安装的Go二进制文件。 RACK_BUCKET=ec4a542dbf90c03b9f75-b342aba65414ad802720b41e8159cf45.ssl.cf5.rackcdn.com RACK_VERSION=1.1.0-beta1 curl -fSL "https://${RACK_BUCKET}/${RACK_VERSION}/Linux/amd64/rack" -o /usr/local/bin/rack chmod +x /usr/local/bin/rack rack help sh: rack: not found /usr/local/bin/rack help sh: /usr/local/bin/rack: not found ls […]

在Windows上,是否有可能作为一个不同的用户运行一个goroutine?

你如何委托goroutine运行到另一个非pipe理员帐户在Windows上? 我看到你可以在Linux上使用syscall.Setuid()来做到这一点。 我无法看到如何使用Windows系统调用包在Windows上执行此操作。 我希望能够在程序运行时设置goroutine运行的帐户。 这可能吗? 背景位: –我想切换运行goroutine的用户,这样我就可以在使用go-oci8时(参见我的其他问题 )更改在数据库连接期间传递给Oracle的OS用户。 我需要连接到数据库,并使用login用户(OS用户)作为安全性的一部分。 在java中,我可以在连接build立期间更改环境variables(或者如果仅连接一个用户,则可以轻弹username环境variables)。 我有用户数据库用户名(这与操作系统的用户名相匹配),我得到的数据库用户密码。 我没有用户的Windowslogin密码。 我希望能够以运行pipe理员身份的主要go程序将运行goroutine委托给所需的windows用户,与我突出显示的Linux端口绑定示例类似。 将Oraclelogin更改为不使用OS用户不是一个选项,所以如果我不能解决这个问题,它将返回到Java :-(。

从CGo中调用Go的COM对象方法

我在Go中创build了一个Direct3D9包装器 ,它使用CGo来与C中的COM对象进行交互。 我想摆脱在Windows下的C编译器的依赖,所以用户不必安装MinGW或Cygwin从Go使用DirectX。 问题是,d3d9.dll不公开C函数,但使用COM。 加载DLL(使用syscall.LoadLibrary("d3d9.dll") )后可以直接调用的唯一函数是Direct3DCreate9 。 这将返回一个COM对象,将所有function公开为方法。 如何在没有CGo的情况下从纯Go中调用COM对象方法? 我知道Go-OLE库声明它调用没有CGo的COM接口,但我不能从源代码中看到如何去为Direct3D9做同样的事情。 一个简单的例子只有相关的部分将是非常有帮助的。

如何configuration用Go编写的Windows服务的失败操作?

我使用golang.org/x/sys/windows/svc包在Go中编写Windows服务。 到目前为止,这一切都很好,很容易开始,我喜欢它。 我写了一些自动更新function,我想要服务在完成更新时自行重启。 我已经尝试过产生一个使用SCM重新启动服务的进程,但是它logging了一个错误消息,这似乎是在以本地系统的身份运行时试图控制服务。 The service process could not connect to the service controller. 一个更好/更简单的方法似乎是os.Exit(1)并有服务Failure Actions设置为Restart on Failure ,这工作出色! 唯一的问题是,似乎没有function来使用Go以编程方式configuration这些选项。 我已经做了一些挖掘,它看起来像他们通过将一个结构传递给advapi32.dll ChangeServiceConfig2 – 如何创build在崩溃时重新启动的服务 在golang / sys / blob / master / windows / svc / mgr / config.go – func updateDescription(handle windows.Handle, desc string) error 代码已经调用了windows.ChangeServiceConfig2 ,它是DLL调用的链接。 并且这个SERVICE_FAILURE_ACTIONS结构的微软文档在这里 。 我无法弄清楚如何使用Go来构build和传递结构 – 有没有人有任何见解?

如何在Go中pipe理Windows用户帐户?

我需要能够从Go应用程序pipe理Windows本地用户帐户,并且似乎没有使用CGo,没有本地绑定。 我最初的search引导我说,最好使用“exec.Command”来运行“net user”命令,但是在parsing响应代码时,这看起来很混乱和不可靠。 我发现处理这种types的东西的函数是在netapi32.dll库中,但是Go本身并不支持Windows头文件,所以调用这些函数并不容易。 以https://github.com/golang/sys/tree/master/windows为例,看来Go团队已经在代码中重新定义了一切,然后调用DLL函数。 我很难将它们包装在一起,但是我已经获得了我所瞄准的低级API的模板,然后在它上面封装了一个更高级别的API,就像核心的Go运行时一样。 type LMSTR ???? type DWORD ???? type LPBYTE ???? type LPDWORD ???? type LPWSTR ???? type NET_API_STATUS DWORD; type USER_INFO_1 struct { usri1_name LPWSTR usri1_password LPWSTR usri1_password_age DWORD usri1_priv DWORD usri1_home_dir LPWSTR usri1_comment LPWSTR usri1_flags DWORD usri1_script_path LPWSTR } type GROUP_USERS_INFO_0 struct { grui0_name LPWSTR } type USER_INFO_1003 struct […]