123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package libcontainerd
- import (
- "io"
- "github.com/Microsoft/hcsshim"
- )
- // process keeps the state for both main container process and exec process.
- type process struct {
- processCommon
- // Platform specific fields are below here.
- // commandLine is to support returning summary information for docker top
- commandLine string
- hcsProcess hcsshim.Process
- }
- func openReaderFromPipe(p io.ReadCloser) io.Reader {
- r, w := io.Pipe()
- go func() {
- if _, err := io.Copy(w, p); err != nil {
- r.CloseWithError(err)
- }
- w.Close()
- p.Close()
- }()
- return r
- }
- type stdInCloser struct {
- io.WriteCloser
- hcsshim.Process
- }
- func createStdInCloser(pipe io.WriteCloser, process hcsshim.Process) *stdInCloser {
- return &stdInCloser{
- WriteCloser: pipe,
- Process: process,
- }
- }
- func (stdin *stdInCloser) Close() error {
- if err := stdin.WriteCloser.Close(); err != nil {
- return err
- }
- return stdin.Process.CloseStdin()
- }
- func (stdin *stdInCloser) Write(p []byte) (n int, err error) {
- return stdin.WriteCloser.Write(p)
- }
|