在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ 執(zhí)行(Exec)外部程序
信號
創(chuàng)建目錄權(quán)限
示例程序
進程的定義
Hello World進程
創(chuàng)建進程
進程鎖
第四章 項目實例Run
Nohup命令
PID
前言
系統(tǒng)調(diào)用sendfile
進程參數(shù)
參考書籍
后記
進程狀態(tài)
本書概述
寫時復(fù)制(Copy On Write)
Docker簡介
第五章 注意事項
實現(xiàn)Run
孤兒進程概念
共享內(nèi)存
衍生(Spawn)新進程
PPID
第三章 進程進階
退出碼
簡介
進程文件
Thanks for reading!
項目學(xué)習(xí)
第一章 進程基礎(chǔ)
僵尸進程
系統(tǒng)調(diào)用
POSIX簡介
執(zhí)行(Exec)外部程序
文件描述符
進程名字
進程輸入與輸出
Cgroups
進程間通信
查看PID
死鎖概念
進程越多越好?
Run項目架構(gòu)
  • 1.
復(fù)制(Fork)進程
第二章 Go編程實例
活鎖概念
守護(Daemon)進程
并發(fā)與并行
捕獲SIGKILL
Namespaces簡介

執(zhí)行(Exec)外部程序

執(zhí)行(Exec)外部程序

這是來自GoByExample的例子,代碼在https://gobyexample.com/execing-processes。

把新程序加載到自己的內(nèi)存。

與Spawn不同,執(zhí)行外部程序并不會返回到原進程中,也就是讓外部程序完全取代本進程。

代碼實現(xiàn)

package main

import "syscall"
import "os"
import "os/exec"

func main() {
    binary, lookErr := exec.LookPath("ls")
    if lookErr != nil {
        panic(lookErr)
    }
    args := []string{"ls", "-a", "-l", "-h"}
    env := os.Environ()
    execErr := syscall.Exec(binary, args, env)
    if execErr != nil {
        panic(execErr)
    }
}

運行結(jié)果

$ go run execing-processes.go
total 16
drwxr-xr-x  4 mark 136B Oct 3 16:29 .
drwxr-xr-x 91 mark 3.0K Oct 3 12:50 ..
-rw-r--r--  1 mark 1.3K Oct 3 16:28 execing-processes.go

歸納總結(jié)

如果你的程序就是用來執(zhí)行外部程序的,例如后面提到的項目實例Run,那使用syscall.Exec執(zhí)行外部程序就最合適了。注意調(diào)用該函數(shù)后,本進程后面的代碼將不可能再執(zhí)行了。