1 /////////////////////////////////////////////////////////////////////////////// 2 // Name: src/unix/baseunix.cpp 3 // Purpose: misc stuff only used in console applications under Unix 4 // Author: Vadim Zeitlin 5 // Modified by: 6 // Created: 23.06.2003 7 // RCS-ID: $Id: baseunix.cpp 40599 2006-08-13 21:00:32Z VZ $ 8 // Copyright: (c) 2003 Vadim Zeitlin <vadim@wxwindows.org> 9 // License: wxWindows licence 10 /////////////////////////////////////////////////////////////////////////////// 11 12 // ============================================================================ 13 // declarations 14 // ============================================================================ 15 16 // ---------------------------------------------------------------------------- 17 // headers 18 // ---------------------------------------------------------------------------- 19 20 // for compilers that support precompilation, includes "wx.h". 21 #include "wx/wxprec.h" 22 23 #ifdef __BORLANDC__ 24 #pragma hdrstop 25 #endif 26 27 #ifndef WX_PRECOMP 28 #include "wx/log.h" 29 #include "wx/intl.h" 30 #include "wx/utils.h" 31 #endif //WX_PRECOMP 32 33 #include "wx/apptrait.h" 34 #include "wx/unix/execute.h" 35 36 // for waitpid() 37 #include <sys/types.h> 38 #include <sys/wait.h> 39 40 // ============================================================================ 41 // wxConsoleAppTraits implementation 42 // ============================================================================ 43 44 // ---------------------------------------------------------------------------- 45 // wxExecute support 46 // ---------------------------------------------------------------------------- 47 CreateEndProcessPipe(wxExecuteData & WXUNUSED (data))48bool wxConsoleAppTraits::CreateEndProcessPipe(wxExecuteData& WXUNUSED(data)) 49 { 50 // nothing to do, so always ok 51 return true; 52 } 53 54 bool IsWriteFDOfEndProcessPipe(wxExecuteData & WXUNUSED (data),int WXUNUSED (fd))55wxConsoleAppTraits::IsWriteFDOfEndProcessPipe(wxExecuteData& WXUNUSED(data), 56 int WXUNUSED(fd)) 57 { 58 // we don't have any pipe 59 return false; 60 } 61 62 void DetachWriteFDOfEndProcessPipe(wxExecuteData & WXUNUSED (data))63wxConsoleAppTraits::DetachWriteFDOfEndProcessPipe(wxExecuteData& WXUNUSED(data)) 64 { 65 // nothing to do 66 } 67 68 69 int WaitForChild(wxExecuteData & execData)70wxConsoleAppTraits::WaitForChild(wxExecuteData& execData) 71 { 72 wxASSERT_MSG( execData.flags & wxEXEC_SYNC, 73 wxT("async execution not supported yet") ); 74 75 int exitcode = 0; 76 if ( waitpid(execData.pid, &exitcode, 0) == -1 || !WIFEXITED(exitcode) ) 77 { 78 wxLogSysError(_("Waiting for subprocess termination failed")); 79 } 80 81 return exitcode; 82 } 83 84