diff options
| author | tv <tv@iiso> | 2011-09-14 03:06:50 +0200 | 
|---|---|---|
| committer | tv <tv@iiso> | 2011-09-14 03:06:50 +0200 | 
| commit | dcb9737ae58fea03b714675eb4cc8d7b6f52ccf4 (patch) | |
| tree | e425983abeb2c9bb5d87d990599ec52e574a8e58 /hyper/process/main.go | |
| parent | d39f90f7c19b930b6b5bde0bbb716cbbbdb1d633 (diff) | |
//hyper/process main.go: first steps
Diffstat (limited to 'hyper/process/main.go')
| -rw-r--r-- | hyper/process/main.go | 52 | 
1 files changed, 52 insertions, 0 deletions
diff --git a/hyper/process/main.go b/hyper/process/main.go new file mode 100644 index 00000000..297be2cf --- /dev/null +++ b/hyper/process/main.go @@ -0,0 +1,52 @@ +package main + +import "fmt" +import "os" + + +func reader(file *os.File) { +  var b []byte = make([]byte, 1024) +  var err os.Error = nil +  for err == nil { +    var n int +    n, err = file.Read(b) +    fmt.Printf("data: %d, %s\n", n, b) +  } +} + +func main() { +  var name = "/usr/bin/bc" +  var argv = []string{ "bc" } +  var envv = []string{ "FOO=23" } +  //var chroot = false +  var dir = "/var/empty" +  var files [3][2]*os.File +  var err os.Error +  +  for i, _ := range files { +    files[i][0], files[i][1], err = os.Pipe() +    err = err +  } + +  var attr = &os.ProcAttr{ +    Dir: dir, +    Env: envv, +    Files: []*os.File{ /*files[0][0] */ os.Stdin, files[1][1], files[2][1]}, +  } + +  var p *os.Process + +  p, err = os.StartProcess(name, argv, attr) + +  for _, file := range attr.Files { +    file.Close() +  } + +  p=p + +  go reader(files[1][0]) +  reader(files[2][0]) + +  fmt.Printf("hello, world\n") + +}  | 
