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 48bool wxConsoleAppTraits::CreateEndProcessPipe(wxExecuteData& WXUNUSED(data)) 49{ 50 // nothing to do, so always ok 51 return true; 52} 53 54bool 55wxConsoleAppTraits::IsWriteFDOfEndProcessPipe(wxExecuteData& WXUNUSED(data), 56 int WXUNUSED(fd)) 57{ 58 // we don't have any pipe 59 return false; 60} 61 62void 63wxConsoleAppTraits::DetachWriteFDOfEndProcessPipe(wxExecuteData& WXUNUSED(data)) 64{ 65 // nothing to do 66} 67 68 69int 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