Golang Cafe #17

今回はosのサブパッケージ(exec,signal,user)です。Windowsでは少々ツラい場面もありました。 http://www.zusaar.com/event/3877003
1
Takashi Yokoyama @ttyokoyama

Golang Cafe #17 を開催します。今回は、osパッケージのサブパッケージを見ます。 http://t.co/eAeE5tgCAP #gdgchugoku #golang

2014-02-12 23:27:27
Takashi Yokoyama @ttyokoyama

そろそろ、開催の時間が近づいてきました。到着した方は適当に入って席の確保をお願いします。 #gdgchugoku

2014-02-16 17:24:20
Ryuji Iwata @qt_luigi

Golang Cafe #17、始まりまーす。 #gdgchugoku

2014-02-16 18:19:05
Ryuji Iwata @qt_luigi

本日はosのサブパッケージ(exec,signal,user)です。 #gdgchugoku

2014-02-16 18:24:11
Ryuji Iwata @qt_luigi

まずはexecから。外部コマンドを実行します。 #gdgchugoku

2014-02-16 18:31:56
taknb2nch @taknb2nch

Error exec: "dir": executable file not found in %PATH% #gdgchugoku

2014-02-16 18:32:08
Ryuji Iwata @qt_luigi

「PipeはStart()の前でないと取得できません。」 「PipeはStart()の前でないと取得できません。 」 大事なことなので2回言いました。 by ttyokoyamaさん #gdgchugoku

2014-02-16 18:35:38
Ryuji Iwata @qt_luigi

exec.Run()はコマンドの完了を待ちます。 exec.Start()はコマンドの完了を待ちません。 #gdgchugoku

2014-02-16 18:39:23
taknb2nch @taknb2nch

cmd := exec.Command("cmd", "/c", "dir", "d:\\var") でいけた、でも文字化け。UTF-8だから? #gdgchugoku

2014-02-16 18:42:11
Takashi Yokoyama @ttyokoyama

今回のコマンドのサンプルをもう少しシンプルにするには、 exec.Command().Output()とかする。 http://t.co/I5bkoilPNq #gdgchugoku #golang

2014-02-16 18:47:36
Takashi Yokoyama @ttyokoyama

標準エラー出力も取りたかったら、CombinedOutput()を使う。 http://t.co/VfVCGU2J2s #gdgchugoku #golang

2014-02-16 18:49:53
Ryuji Iwata @qt_luigi

次はsignalパッケージ。KILLとかのシグナルですね。 #gdgchugoku

2014-02-16 19:02:54
Ryuji Iwata @qt_luigi

ちょっと寄り道。Windows+Goでdllをロードできるか? http://t.co/as5tOPRC8M #gdgchugoku

2014-02-16 19:10:10
taknb2nch @taknb2nch

syscall.Kill はWindowsでは動きません。return -1 でもなけりゃ、定義すらない。 #gdgchugoku

2014-02-16 19:19:38
taknb2nch @taknb2nch

「Windowsでは動かない」というのが今日の成果です。 #gdgchugoku

2014-02-16 19:22:15
Ryuji Iwata @qt_luigi

最後はuserパッケージ。アカウント情報を取得します。 #gdgchugoku

2014-02-16 19:29:11
Takashi Yokoyama @ttyokoyama

Windowsで、user.Current()を呼び出した時のuidはSIDが入る。 #gdgchugoku #golang

2014-02-16 19:51:57
Takashi Yokoyama @ttyokoyama

Go言語のクロスコンパイル(Windowsもいける…のか?) http://t.co/ksl6gZBCTp #gdgchugoku #golang

2014-02-16 19:58:15
Ryuji Iwata @qt_luigi

taknb2nchさんがWindows 64bit上で32bitのクロスコンパイルに挑戦中。 #gdgchugoku

2014-02-16 19:58:46
Takashi Yokoyama @ttyokoyama

Windows版のuser.Current()で取れるuidはSIDで、gidはGetTokenInformation() APIのTokenPrimaryGroupを指定したものから取得する。 http://t.co/nVz8bRSAff #gdgchugoku #golang

2014-02-16 20:05:55
Takashi Yokoyama @ttyokoyama

Windows版のuser.Current()のホームディレクトリは、GetUserProfileDirectory() APIの結果から取得する。 http://t.co/GficFawA9n #gdgchugoku #golang

2014-02-16 20:08:36