commit | 60b0aaa3c880c9aba25b95cad2043075457f53e0 | [log] [tgz] |
---|---|---|
author | Elias Naur <elias.naur@gmail.com> | Mon Jan 30 21:36:33 2017 +0100 |
committer | Elias Naur <elias.naur@gmail.com> | Tue Jan 31 20:25:16 2017 +0000 |
tree | 307c3dcffbce74380d54cc35c43a267fbb017129 | |
parent | ab9391cb88a2a1daf1382e1ad7e355ce6207c891 [diff] |
internal/mobileinit: preserve stdout and stderr file descriptors To ensure correct command line behavior, the Go runtime crashes when a SIGPIPE is received on either fd 1 or fd 2 (CL 18151). At the same time, go mobile redirects stdout and stderr to the Android logcat facility by replacing os.Stderr and os.Stdout with the writer ends of two pipes. This in turn allows the original os.Stderr and os.Stdout files to be garbage finalized, closing fd 1 and 2. If an Android app then happens to open a pipe or socket, fd 1 and 2 might be reused. If the pipe or socket ever receives a SIGPIPE, the Go runtime will think the signal was for stdout or stderr and crash the program. This CL preserves fd 1 and fd 2 by using dup3 to redirect the file descriptors. Change-Id: I5058d729eca52503a43f0e8c87a9fd296ed3667e Reviewed-on: https://go-review.googlesource.com/35961 Reviewed-by: David Crawshaw <crawshaw@golang.org>
The Go mobile repository holds packages and build tools for using Go on mobile platforms.
Package documentation as a starting point:
The Go Mobile project is experimental. Use this at your own risk. While we are working hard to improve it, neither Google nor the Go team can provide end-user support.
This is early work and installing the build system requires Go 1.5. Follow the instructions on golang.org/wiki/Mobile to install the gomobile command, build the basic and the bind example apps.
Contributions to Go are appreciated. See https://golang.org/doc/contribute.html.