WvStreams
wvpty.h
1/* -*- Mode: C++ -*-
2 * Worldvisions Weaver Software:
3 * Copyright (C) 1997-2004 Net Integration Technologies, Inc.
4 *
5 * WvStreams implementation of ptys under Linux.
6 *
7 * For more information on programming ptys, see chapter 19 of
8 * Stevens' "Advanced Programming in the UNIX Environment"
9 */
10#ifndef __WVPTY_H
11#define __WVPTY_H
12
13#include "wvfdstream.h"
14#include "wvtr1.h"
15
16class WvPty: public WvFDStream
17{
18private:
19 WvString _master, _slave;
20 pid_t _pid;
21 int _exit_status;
22
23 static bool open_pty(WvString &master, int &master_fd,
24 WvString &slave, int &slave_fd);
25
26 void monitor_child(bool wait);
27
28public:
29 typedef wv::function<bool(WvPty&)> Callback;
30
31 Callback pre_exec_cb;
32 Callback post_exec_cb; // This can only be called if exec() fails
33
34 WvPty(const char *program, const char * const *argv,
35 Callback _pre_exec_cb = Callback(),
36 Callback _post_exec_cb = Callback());
37
38 void kill(int signum);
39 bool child_exited();
40 bool child_killed();
41 int finish();
42 int exit_status();
43
44 const char *master() const
45 { return _master; }
46 const char *slave() const
47 { return _slave; }
48 pid_t pid() const
49 { return _pid; }
50
51 const char *wstype() const { return "WvPty"; }
52};
53
54#endif // __WVPTY_H
Base class for streams built on Unix file descriptors.
Definition wvfdstream.h:21
Definition wvpty.h:17
WvString is an implementation of a simple and efficient printable-string class.
Definition wvstring.h:330