diff options
Diffstat (limited to '')
| -rw-r--r-- | src/process.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/process.cpp b/src/process.cpp index f04d9fb..ff40f73 100644 --- a/src/process.cpp +++ b/src/process.cpp | |||
| @@ -14,12 +14,14 @@ | |||
| 14 | #include <fcntl.h> | 14 | #include <fcntl.h> |
| 15 | #include <errno.h> | 15 | #include <errno.h> |
| 16 | 16 | ||
| 17 | Bu::Process::Process( const char *sName, char *const argv[] ) | 17 | Bu::Process::Process( const char *sName, char *const argv[] ) : |
| 18 | iPid( 0 ) | ||
| 18 | { | 19 | { |
| 19 | gexec( sName, argv ); | 20 | gexec( sName, argv ); |
| 20 | } | 21 | } |
| 21 | 22 | ||
| 22 | Bu::Process::Process( const char *sName, const char *argv, ...) | 23 | Bu::Process::Process( const char *sName, const char *argv, ...) : |
| 24 | iPid( 0 ) | ||
| 23 | { | 25 | { |
| 24 | int iCnt = 0; | 26 | int iCnt = 0; |
| 25 | va_list ap; | 27 | va_list ap; |
| @@ -43,6 +45,7 @@ Bu::Process::Process( const char *sName, const char *argv, ...) | |||
| 43 | 45 | ||
| 44 | Bu::Process::~Process() | 46 | Bu::Process::~Process() |
| 45 | { | 47 | { |
| 48 | close(); | ||
| 46 | } | 49 | } |
| 47 | 50 | ||
| 48 | void Bu::Process::gexec( const char *sName, char *const argv[] ) | 51 | void Bu::Process::gexec( const char *sName, char *const argv[] ) |
| @@ -79,6 +82,14 @@ void Bu::Process::gexec( const char *sName, char *const argv[] ) | |||
| 79 | 82 | ||
| 80 | void Bu::Process::close() | 83 | void Bu::Process::close() |
| 81 | { | 84 | { |
| 85 | if( iPid ) | ||
| 86 | { | ||
| 87 | ::close( iStdIn ); | ||
| 88 | ::close( iStdOut ); | ||
| 89 | int status; | ||
| 90 | waitpid( iPid, &status, 0 ); | ||
| 91 | iPid = 0; | ||
| 92 | } | ||
| 82 | } | 93 | } |
| 83 | 94 | ||
| 84 | size_t Bu::Process::read( void *pBuf, size_t nBytes ) | 95 | size_t Bu::Process::read( void *pBuf, size_t nBytes ) |
