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

Функция os.StartProcess

Функция os.StartProcess запускает новый процесс, используя переданные параметры. Первым аргументом она принимает путь к исполняемому файлу. Вторым аргументом передается срез строк с аргументами командной строки (первый элемент должен быть именем программы). Третий аргумент - структура os.ProcAttr, которая задает атрибуты процесса, такие как переменные среды, рабочий каталог и файловые дескрипторы. Функция возвращает указатель на os.Process и ошибку.

Синтаксис

os.StartProcess(name string, argv []string, attr *os.ProcAttr) (*os.Process, error)

Пример

Давайте запустим команду echo с аргументом "hello world" и выведем информацию о процессе:

package main import ( "fmt" "os" ) func main() { attr := &os.ProcAttr{ Files: []*os.File{os.Stdin, os.Stdout, os.Stderr}, } proc, err := os.StartProcess("/bin/echo", []string{"echo", "hello world"}, attr) if err != nil { fmt.Println("Error:", err) return } fmt.Println("Process PID:", proc.Pid) }

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

"hello world" "Process PID: 12345"

Пример

Давайте запустим команду ls для вывода списка файлов в текущем каталоге и обработаем ошибку:

package main import ( "fmt" "os" ) func main() { attr := &os.ProcAttr{ Files: []*os.File{os.Stdin, os.Stdout, os.Stderr}, Dir: ".", } proc, err := os.StartProcess("/bin/ls", []string{"ls", "-l"}, attr) if err != nil { fmt.Println("Failed to start process:", err) return } state, err := proc.Wait() if err != nil { fmt.Println("Process error:", err) return } fmt.Println("Process exited with:", state.ExitCode()) }

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

"total 0" "-rw-r--r-- 1 user user 0 date file1.txt" "-rw-r--r-- 1 user user 0 date file2.txt" "Process exited with: 0"

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

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