mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			71 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
// 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 (
 | 
						|
	"runtime"
 | 
						|
	"sync/atomic"
 | 
						|
	"syscall"
 | 
						|
)
 | 
						|
 | 
						|
// Process stores the information about a process created by StartProcess.
 | 
						|
type Process struct {
 | 
						|
	Pid    int
 | 
						|
	handle uintptr
 | 
						|
	isdone uint32 // process has been successfully waited on, non zero if true
 | 
						|
}
 | 
						|
 | 
						|
func newProcess(pid int, handle uintptr) *Process {
 | 
						|
	p := &Process{Pid: pid, handle: handle}
 | 
						|
	runtime.SetFinalizer(p, (*Process).Release)
 | 
						|
	return p
 | 
						|
}
 | 
						|
 | 
						|
func (p *Process) setDone() {
 | 
						|
	atomic.StoreUint32(&p.isdone, 1)
 | 
						|
}
 | 
						|
 | 
						|
func (p *Process) done() bool {
 | 
						|
	return atomic.LoadUint32(&p.isdone) > 0
 | 
						|
}
 | 
						|
 | 
						|
// 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
 | 
						|
 | 
						|
	// 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
 | 
						|
}
 | 
						|
 | 
						|
// A Signal represents an operating system signal.
 | 
						|
// The usual underlying implementation is operating system-dependent:
 | 
						|
// on Unix it is syscall.Signal.
 | 
						|
type Signal interface {
 | 
						|
	String() string
 | 
						|
	Signal() // to distinguish from other Stringers
 | 
						|
}
 | 
						|
 | 
						|
// Getpid returns the process id of the caller.
 | 
						|
func Getpid() int { return syscall.Getpid() }
 | 
						|
 | 
						|
// Getppid returns the process id of the caller's parent.
 | 
						|
func Getppid() int { return syscall.Getppid() }
 |