mirror of
https://github.com/opencontainers/runc.git
synced 2026-07-10 21:53:57 +08:00
244c9fc426
This implements {createTTY, detach} and all of the combinations and
negations of the two that were previously implemented. There are some
valid questions about out-of-OCI-scope topics like !createTTY and how
things should be handled (why do we dup the current stdio to the
process, and how is that not a security issue). However, these will be
dealt with in a separate patchset.
In order to allow for late console setup, split setupRootfs into the
"preparation" section where all of the mounts are created and the
"finalize" section where we pivot_root and set things as ro. In between
the two we can set up all of the console mountpoints and symlinks we
need.
We use two-stage synchronisation to ensures that when the syscalls are
reordered in a suboptimal way, an out-of-place read() on the parentPipe
will not gobble the ancilliary information.
This patch is part of the console rewrite patchset.
Signed-off-by: Aleksa Sarai <asarai@suse.de>
19 lines
367 B
Go
19 lines
367 B
Go
package libcontainer
|
|
|
|
import "io"
|
|
|
|
// Console represents a pseudo TTY.
|
|
type Console interface {
|
|
io.ReadWriter
|
|
io.Closer
|
|
|
|
// Path returns the filesystem path to the slave side of the pty.
|
|
Path() string
|
|
|
|
// Fd returns the fd for the master of the pty.
|
|
Fd() uintptr
|
|
}
|
|
|
|
// ConsoleData represents arbitrary setup data used when setting up console
|
|
// handling. It is
|