本文整理汇总了Golang中github.com/gocircuit/circuit/use/errors.Pack函数的典型用法代码示例。如果您正苦于以下问题:Golang Pack函数的具体用法?Golang Pack怎么用?Golang Pack使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Pack函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: StartPTY
func (x *XCmd) StartPTY(stty []string) (xpty circuit.X, err error) {
pty, tty, err := pty.Open()
if err != nil {
return nil, errors.Pack(err)
}
defer tty.Close() // Close our handle on the TTY after the child executes
x.cmd.Stdout, x.cmd.Stdin, x.cmd.Stderr = tty, tty, tty
x.cmd.SysProcAttr = &syscall.SysProcAttr{Setctty: true, Setsid: true}
if err = x.cmd.Start(); err != nil {
pty.Close()
return nil, errors.Pack(err)
}
// sfs1/rex has comment that maybe tty flags cannot change until tty opened by child?? Not sure.
if len(stty) > 0 {
arg0 := []string{"-f", tty.Name()}
if err = exec.Command("stty", append(arg0, "sane")...).Run(); err != nil {
return nil, errors.Pack(err)
}
//log.Printf("PTY=%s, XX %#v", pty.Name(), append(arg0, stty...))
if err = exec.Command("stty", append(arg0, stty...)...).Run(); err != nil {
return nil, errors.Pack(err)
}
}
defer func() {
go x.cmd.Wait() // Calling wait is necessary, otherwise child remains zombie
}()
return xyio.NewXReadWriteCloser(pty), nil
}
示例2: Profile
func (x XServer) Profile(name string) (circuit.X, error) {
r, err := x.server.Profile(name)
if err != nil {
return nil, errors.Pack(err)
}
return xio.NewXReadCloser(r), nil
}
示例3: Make
func (x XTerminal) Make(kind string, arg interface{}) (xelm circuit.X, err error) {
elm, err := x.t.Make(kind, arg)
if err != nil {
return nil, xerrors.Pack(err)
}
return elm.X(), nil
}
示例4: Recv
func (x XValve) Recv() (circuit.X, error) {
r, err := x.Valve.Recv()
if err != nil {
return nil, errors.Pack(err)
}
return xio.NewXReadCloser(r), nil
}
示例5: Send
func (x XValve) Send() (circuit.X, error) {
w, err := x.Valve.Send()
if err != nil {
return nil, errors.Pack(err)
}
return xio.NewXWriteCloser(w), nil
}
示例6: Peek
func (x XContainer) Peek() (*ds.Stat, error) {
stat, err := x.Container.Peek()
return stat, errors.Pack(err)
}
示例7: Run
// Run executes the command and blocks until it completes, akin to os/exec.Cmd.Run
func (x *XCmd) Run() error {
return errors.Pack(x.cmd.Run())
}
示例8: Close
func (x XValve) Close() error {
return errors.Pack(x.Valve.Close())
}
示例9: Close
func (x XCloser) Close() error {
return errors.Pack(x.Closer.Close())
}
示例10: Write
func (x XWriter) Write(p []byte) (int, error) {
n, err := x.Writer.Write(p)
return n, errors.Pack(err)
}
示例11: Rejoin
func (x XServer) Rejoin(addr string) error {
return errors.Pack(x.server.Rejoin(addr))
}
示例12: Wait
// Wait blocks until the process completes, akin to os/exec.Cmd.Wait
func (x *XCmd) Wait() error {
return errors.Pack(x.cmd.Wait())
}
示例13: Signal
func (x XContainer) Signal(sig string) error {
return errors.Pack(x.Container.Signal(sig))
}
示例14: Wait
func (x XContainer) Wait() (*ds.Stat, error) {
stat, err := x.Container.Wait()
return stat, errors.Pack(err)
}
示例15: Signal
func (x XProc) Signal(sig string) error {
return errors.Pack(x.Proc.Signal(sig))
}