2009-02-15 20:35:52 -07:00
|
|
|
// Copyright 2009 The Go Authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
package os
|
|
|
|
|
|
|
|
import (
|
2011-02-03 20:41:26 -07:00
|
|
|
"runtime"
|
2009-12-15 16:40:16 -07:00
|
|
|
"syscall"
|
2009-02-15 20:35:52 -07:00
|
|
|
)
|
|
|
|
|
2011-02-03 20:41:26 -07:00
|
|
|
// Process stores the information about a process created by StartProcess.
|
|
|
|
type Process struct {
|
|
|
|
Pid int
|
|
|
|
handle int
|
2011-07-11 16:47:42 -06:00
|
|
|
done bool // process has been successfuly waited on
|
2011-02-03 20:41:26 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
func newProcess(pid, handle int) *Process {
|
2011-07-11 16:47:42 -06:00
|
|
|
p := &Process{Pid: pid, handle: handle}
|
2011-02-03 20:41:26 -07:00
|
|
|
runtime.SetFinalizer(p, (*Process).Release)
|
|
|
|
return p
|
|
|
|
}
|
|
|
|
|
2011-03-15 12:41:19 -06:00
|
|
|
// ProcAttr holds the attributes that will be applied to a new process
|
|
|
|
// started by StartProcess.
|
|
|
|
type ProcAttr struct {
|
|
|
|
// If Dir is non-empty, the child changes into the directory before
|
|
|
|
// creating the process.
|
|
|
|
Dir string
|
|
|
|
// If Env is non-nil, it gives the environment variables for the
|
|
|
|
// new process in the form returned by Environ.
|
|
|
|
// If it is nil, the result of Environ will be used.
|
|
|
|
Env []string
|
|
|
|
// Files specifies the open files inherited by the new process. The
|
|
|
|
// first three entries correspond to standard input, standard output, and
|
|
|
|
// standard error. An implementation may support additional entries,
|
|
|
|
// depending on the underlying operating system. A nil entry corresponds
|
|
|
|
// to that file being closed when the process starts.
|
|
|
|
Files []*File
|
2011-06-14 08:49:34 -06:00
|
|
|
|
|
|
|
// Operating system-specific process creation attributes.
|
|
|
|
// Note that setting this field means that your program
|
|
|
|
// may not execute properly or even compile on some
|
|
|
|
// operating systems.
|
|
|
|
Sys *syscall.SysProcAttr
|
2011-03-15 12:41:19 -06:00
|
|
|
}
|
|
|
|
|
2011-07-13 17:29:37 -06:00
|
|
|
// A Signal can represent any operating system signal.
|
|
|
|
type Signal interface {
|
|
|
|
String() string
|
|
|
|
}
|
|
|
|
|
2009-05-25 15:38:38 -06:00
|
|
|
// Getpid returns the process id of the caller.
|
2009-12-15 16:40:16 -07:00
|
|
|
func Getpid() int { return syscall.Getpid() }
|
2009-05-25 15:38:38 -06:00
|
|
|
|
|
|
|
// Getppid returns the process id of the caller's parent.
|
2009-12-15 16:40:16 -07:00
|
|
|
func Getppid() int { return syscall.Getppid() }
|