31 lines
		
	
	
		
			523 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			523 B
		
	
	
	
		
			Go
		
	
	
	
	
	
// +build !windows
 | 
						|
 | 
						|
package main
 | 
						|
 | 
						|
import (
 | 
						|
	"io/ioutil"
 | 
						|
	"os"
 | 
						|
	"path/filepath"
 | 
						|
	"syscall"
 | 
						|
)
 | 
						|
 | 
						|
func createStdio() (s stdio, err error) {
 | 
						|
	tmp, err := ioutil.TempDir("", "ctr-")
 | 
						|
	if err != nil {
 | 
						|
		return s, err
 | 
						|
	}
 | 
						|
	// create fifo's for the process
 | 
						|
	for name, fd := range map[string]*string{
 | 
						|
		"stdin":  &s.stdin,
 | 
						|
		"stdout": &s.stdout,
 | 
						|
		"stderr": &s.stderr,
 | 
						|
	} {
 | 
						|
		path := filepath.Join(tmp, name)
 | 
						|
		if err := syscall.Mkfifo(path, 0755); err != nil && !os.IsExist(err) {
 | 
						|
			return s, err
 | 
						|
		}
 | 
						|
		*fd = path
 | 
						|
	}
 | 
						|
	return s, nil
 | 
						|
}
 |