Пакет syscall
Пакет syscall предоставляет низкоуровневый интерфейс
для выполнения системных вызовов операционной системы.
Он позволяет получать информацию о процессе, управлять
сигналами, работать с переменными окружения и выполнять
другие системные операции. В первом параметре функции
передается команда для выполнения, во втором параметре -
аргументы команды, в третьем - переменные окружения.
Синтаксис
syscall.Exec(command, args, env)
Пример
Давайте выполним системную команду 'ls'
с аргументом '-l' с помощью системного вызова:
package 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)
}
}
Пример
Давайте получим идентификатор текущего процесса с помощью системного вызова:
package main
import (
"fmt"
"syscall"
)
func main() {
pid := syscall.Getpid()
fmt.Printf("PID: %d\n", pid)
}
Результат выполнения кода:
"PID: 12345"
Пример
Давайте отправим сигнал завершения процессу с помощью системного вызова:
package 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")
}
}
Результат выполнения кода:
"Signal sent successfully"
Смотрите также
-
функцию
syscall.Exec,
которая выполняет системную команду с заменой текущего процесса -
функцию
syscall.ForkExec,
которая создает новый процесс и выполняет команду -
функцию
syscall.Getpid,
которая возвращает идентификатор текущего процесса -
функцию
syscall.Kill,
которая отправляет сигнал указанному процессу