/* ============================================================================== This file is part of the JUCE library - "Jules' Utility Class Extensions" Copyright 2004-11 by Raw Material Software Ltd. ------------------------------------------------------------------------------ JUCE can be redistributed and/or modified under the terms of the GNU General Public License (Version 2), as published by the Free Software Foundation. A copy of the license is included in the JUCE distribution, or can be found online at www.gnu.org/licenses. JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.rawmaterialsoftware.com/juce for more information. ============================================================================== */ BEGIN_JUCE_NAMESPACE ChildProcess::ChildProcess() {} ChildProcess::~ChildProcess() {} bool ChildProcess::waitForProcessToFinish (const int timeoutMs) const { const int64 timeoutTime = Time::getMillisecondCounter() + timeoutMs; do { if (! isRunning()) return true; } while (timeoutMs < 0 || Time::getMillisecondCounter() < timeoutTime); return false; } String ChildProcess::readAllProcessOutput() { MemoryOutputStream result; for (;;) { char buffer [512]; const int num = readProcessOutput (buffer, sizeof (buffer)); if (num <= 0) break; result.write (buffer, num); } return result.toString(); } //============================================================================== #if JUCE_UNIT_TESTS class ChildProcessTests : public UnitTest { public: ChildProcessTests() : UnitTest ("ChildProcess") {} void runTest() { beginTest ("Child Processes"); #if JUCE_WINDOWS || JUCE_MAC || JUCE_LINUX ChildProcess p; #if JUCE_WINDOWS expect (p.start ("tasklist")); #else expect (p.start ("ls /")); #endif String output (p.readAllProcessOutput()); expect (output.isNotEmpty()); #endif } }; static ChildProcessTests childProcessUnitTests; #endif END_JUCE_NAMESPACE