РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1425 of 1593 menu

Тип os.ProcessState

Тип os.ProcessState содержит информацию о состоянии завершенного процесса. Он возвращается методами Wait и Wait объекта os.Process. Этот тип предоставляет методы для получения кода завершения процесса, времени его выполнения, а также информации об использовании системных ресурсов.

Основные методы

Тип os.ProcessState предоставляет следующие основные методы: Exited - проверяет, завершился ли процесс, ExitCode - возвращает код завершения процесса, Success - проверяет, завершился ли процесс успешно (с кодом 0), Sys - возвращает системную информацию о процессе, SysUsage - возвращает информацию об использовании ресурсов, UserTime - возвращает время, затраченное процессом в пользовательском режиме, SystemTime - возвращает время, затраченное процессом в системном режиме, Pid - возвращает идентификатор процесса.

Синтаксис

type ProcessState struct { // содержит скрытые поля }

Пример получения кода завершения

Давайте запустим процесс и получим его код завершения:

package main import ( "fmt" "os" "os/exec" ) func main() { cmd := exec.Command("ls", "/") err := cmd.Run() if err != nil { if exitError, ok := err.(*exec.ExitError); ok { state := exitError.ProcessState fmt.Printf("Process exited with code: %d\n", state.ExitCode()) fmt.Printf("Success: %v\n", state.Success()) fmt.Printf("Exited: %v\n", state.Exited()) } } else { state := cmd.ProcessState fmt.Printf("Process exited with code: %d\n", state.ExitCode()) fmt.Printf("Success: %v\n", state.Success()) } }

Результат выполнения кода:

"Process exited with code: 0" "Success: true" "Exited: true"

Пример получения времени выполнения

Давайте получим информацию о времени выполнения процесса:

package main import ( "fmt" "os/exec" "time" ) func main() { start := time.Now() cmd := exec.Command("sleep", "1") err := cmd.Run() if err == nil { state := cmd.ProcessState userTime := state.UserTime() systemTime := state.SystemTime() fmt.Printf("User time: %v\n", userTime) fmt.Printf("System time: %v\n", systemTime) fmt.Printf("Total time: %v\n", time.Since(start)) } }

Результат выполнения кода:

"User time: 5ms" "System time: 2ms" "Total time: 1.05s"

Пример получения системной информации

Давайте получим системную информацию о процессе:

package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("echo", "hello") err := cmd.Run() if err == nil { state := cmd.ProcessState sysInfo := state.Sys() fmt.Printf("System info: %v\n", sysInfo) fmt.Printf("PID: %d\n", state.Pid()) } }

Результат выполнения кода:

"System info: &{32683 0 0 0}" "PID: 32683"

Пример обработки ошибки выполнения

Давайте обработаем случай, когда процесс завершается с ошибкой:

package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("false") err := cmd.Run() if err != nil { if exitError, ok := err.(*exec.ExitError); ok { state := exitError.ProcessState fmt.Printf("Error occurred: %v\n", err) fmt.Printf("Exit code: %d\n", state.ExitCode()) fmt.Printf("Success: %v\n", state.Success()) } } }

Результат выполнения кода:

"Error occurred: exit status 1" "Exit code: 1" "Success: false"

Смотрите также

  • тип os.Process,
    который представляет запущенный процесс и позволяет управлять им
  • метод os.Process.Wait,
    который ожидает завершения процесса и возвращает его состояние
  • тип exec.ExitError,
    который представляет ошибку завершения процесса с ненулевым кодом
  • метод exec.Cmd.Run,
    который запускает команду и ожидает ее завершения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить