executable

package
v0.4.18 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 14, 2026 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrMemoryLimitExceeded = errors.New("process exceeded memory limit")

ErrMemoryLimitExceeded is returned when a process exceeds its memory limit

Functions

func GetMemoryLimitInBytes added in v0.4.14

func GetMemoryLimitInBytes() int64

func ResolveAbsolutePath added in v0.4.18

func ResolveAbsolutePath(path string) (absolutePath string, err error)

ResolveAbsolutePath resolves the path according the following rules: 1. If executable is not found ('path' is neither in $PATH, nor found at the path specified) -> Error is returned 2. If the 'path' contains slash, its absolute path is returned 3. If the 'path' does not contains a slash, it is searched for in PATH and its absolute path

Types

type Executable

type Executable struct {
	// Path is the path to the executable.
	Path string

	// TimeoutInMilliseconds is the maximum time the process can run.
	TimeoutInMilliseconds int

	// MemoryLimitInBytes sets the maximum memory the process can use (Linux only).
	// If exceeded, the process will be killed and an error will be returned.
	// Defaults to 2GB. Set to 0 to disable memory limiting.
	MemoryLimitInBytes int64

	// ShouldUsePtyOutputStreams controls whether the executable's standard streams should be set to PTY instead of pipes.
	ShouldUsePtyOutputStreams bool

	// WorkingDir can be set before calling Start or Run to customize the working directory of the executable.
	WorkingDir string

	// Process is the os.Process object for the executable.
	// TODO: See if this actually needs to be exported?
	Process *os.Process
	// contains filtered or unexported fields
}

Executable represents a program that can be executed

func NewExecutable

func NewExecutable(path string) *Executable

NewExecutable returns an Executable

func NewVerboseExecutable

func NewVerboseExecutable(path string, loggerFunc func(string)) *Executable

NewVerboseExecutable returns an Executable struct with a logger configured

func (*Executable) Clone added in v0.2.12

func (e *Executable) Clone() *Executable

func (*Executable) HasExited

func (e *Executable) HasExited() bool

func (*Executable) Kill

func (e *Executable) Kill() error

Kill terminates the program

func (*Executable) Run

func (e *Executable) Run(args ...string) (ExecutableResult, error)

Run starts the specified command, waits for it to complete and returns the result.

func (*Executable) RunWithStdin

func (e *Executable) RunWithStdin(stdin []byte, args ...string) (ExecutableResult, error)

RunWithStdin starts the specified command, sends input, waits for it to complete and returns the result.

func (*Executable) Start

func (e *Executable) Start(args ...string) error

Start starts the specified command but does not wait for it to complete.

func (*Executable) Wait

func (e *Executable) Wait() (ExecutableResult, error)

Wait waits for the program to finish and returns the result.

type ExecutableResult

type ExecutableResult struct {
	Stdout   []byte
	Stderr   []byte
	ExitCode int
}

ExecutableResult holds the result of an executable run

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL