编写Docker容器代码实现管道功能与环境变量识别功能模块
发布时间
阅读量:
阅读量
通道通信
在创建两个Linux进程中,进程之间的通信通常会采用通道机制.所谓的管道,就是用来连接两个进程的通道.
一般管道有两种
无名通道
存在于有亲缘关系的进程之间
有名通道
存在于文件系统的管道.(FIFO管道)
就其本质而言,可以说管道也是一种文件,在进行数据传输的过程中存在特殊之处:即它具备缓冲区功能。值得注意的是,在进行 writes 操作的进程中一旦发现内存已满,则会触发阻塞状态;而在读取操作时如果发现管道为空,则会导致读取进程陷入阻塞状态。
1.用户启动Run
func Run(tty bool, commandArray[] string, res *subsystems.ResourceConfig){
parent, writePipe := container.NewParentProcess(tty)
if parent == nil {
log.Errorf("创建新的进程失败")
}
if err := parent.Start();err != nil {
/*
会调用前面创建的command的进程
首先clone出来一个namespace隔离的进程
在子进程中,调用/proc/self/exe 也就
全部评论 (0)
还没有任何评论哟~
