0
点赞
收藏
分享

微信扫一扫

Docker与Linux Namespace:PID Namesapce

MaxWen 2021-09-24 阅读 52
PaaS

概述

PID namespace是用来隔离进程 id。

源码

package main

import (
    "os/exec"
    "syscall"
    "os"
    "log"
)

func main() {
    cmd := exec.Command("sh")
    cmd.SysProcAttr = &syscall.SysProcAttr{
        Cloneflags: syscall.CLONE_NEWUTS | syscall.CLONE_NEWIPC | syscall.CLONE_NEWPID,
    }
    cmd.Stdin = os.Stdin
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr

    if err := cmd.Run(); err != nil {
        log.Fatal(err)
    }
}

测试

go run pid.go
sh-4.2# echo $$
1

//宿主机上显示进程15117
[root@VM_0_10_centos ~]# pstree -pl
|-sshd(14885)---bash(14888)---go(15117)-+-pid(15138)-+-sh(15142)
|                                       |                                                   |-{pid}(15139)
|                                       |                                                    `-{pid}(15140)
|                                       |-{go}(15118)
|                                       |-{go}(15119)
|                                       |-{go}(15120)
|                                       |-{go}(15121)
|                                       |-{go}(15128)
|                                       `-{go}(15141)

举报

相关推荐

0 条评论