Пакет syscall

Пакет syscall предоставляет низкоуровневый интерфейс для выполнения системных вызовов операционной системы. Он позволяет получать информацию о процессе, управлять сигналами, работать с переменными окружения и выполнять другие системные операции. В первом параметре функции передается команда для выполнения, во втором параметре - аргументы команды, в третьем - переменные окружения.

Синтаксис

gosyscall.Exec(command, args, env)

Пример

Давайте выполним системную команду 'ls' с аргументом '-l' с помощью системного вызова:

gopackage main

import (
  "fmt"
  "syscall"
)

func main() {
  command := "/bin/ls"
  args := []string{"ls", "-l"}
  env := syscall.Environ()
  
  err := syscall.Exec(command, args, env)
  if err != nil {
    fmt.Printf("Error: %v\n", err)
  }
}

Пример

Давайте получим идентификатор текущего процесса с помощью системного вызова:

gopackage main

import (
  "fmt"
  "syscall"
)

func main() {
  pid := syscall.Getpid()
  fmt.Printf("PID: %d\n", pid)
}

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

go"PID: 12345"

Пример

Давайте отправим сигнал завершения процессу с помощью системного вызова:

gopackage main

import (
  "fmt"
  "syscall"
)

func main() {
  pid := 12345
  err := syscall.Kill(pid, syscall.SIGTERM)
  if err != nil {
    fmt.Printf("Error sending signal: %v\n", err)
  } else {
    fmt.Println("Signal sent successfully")
  }
}

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

go"Signal sent successfully"

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

  • функцию syscall.Exec,
    которая выполняет системную команду с заменой текущего процесса
  • функцию syscall.ForkExec,
    которая создает новый процесс и выполняет команду
  • функцию syscall.Getpid,
    которая возвращает идентификатор текущего процесса
  • функцию syscall.Kill,
    которая отправляет сигнал указанному процессу