src/pkg/os/exec.go - The Go Programming Language

Golang

Source file src/pkg/os/exec.go

     1	// Copyright 2009 The Go Authors. All rights reserved.
     2	// Use of this source code is governed by a BSD-style
     3	// license that can be found in the LICENSE file.
     4	
     5	package os
     6	
     7	import (
     8		"runtime"
     9		"syscall"
    10	)
    11	
    12	// Process stores the information about a process created by StartProcess.
    13	type Process struct {
    14		Pid    int
    15		handle uintptr
    16		done   bool // process has been successfully waited on
    17	}
    18	
    19	func newProcess(pid int, handle uintptr) *Process {
    20		p := &Process{Pid: pid, handle: handle}
    21		runtime.SetFinalizer(p, (*Process).Release)
    22		return p
    23	}
    24	
    25	// ProcAttr holds the attributes that will be applied to a new process
    26	// started by StartProcess.
    27	type ProcAttr struct {
    28		// If Dir is non-empty, the child changes into the directory before
    29		// creating the process.
    30		Dir string
    31		// If Env is non-nil, it gives the environment variables for the
    32		// new process in the form returned by Environ.
    33		// If it is nil, the result of Environ will be used.
    34		Env []string
    35		// Files specifies the open files inherited by the new process.  The
    36		// first three entries correspond to standard input, standard output, and
    37		// standard error.  An implementation may support additional entries,
    38		// depending on the underlying operating system.  A nil entry corresponds
    39		// to that file being closed when the process starts.
    40		Files []*File
    41	
    42		// Operating system-specific process creation attributes.
    43		// Note that setting this field means that your program
    44		// may not execute properly or even compile on some
    45		// operating systems.
    46		Sys *syscall.SysProcAttr
    47	}
    48	
    49	// A Signal represents an operating system signal.
    50	// The usual underlying implementation is operating system-dependent:
    51	// on Unix it is syscall.Signal.
    52	type Signal interface {
    53		String() string
    54		Signal() // to distinguish from other Stringers
    55	}
    56	
    57	// The only signal values guaranteed to be present on all systems
    58	// are Interrupt (send the process an interrupt) and
    59	// Kill (force the process to exit).
    60	var (
    61		Interrupt Signal = syscall.SIGINT
    62		Kill      Signal = syscall.SIGKILL
    63	)
    64	
    65	// Getpid returns the process id of the caller.
    66	func Getpid() int { return syscall.Getpid() }
    67	
    68	// Getppid returns the process id of the caller's parent.
    69	func Getppid() int { return syscall.Getppid() }