31# include <crt_externs.h>
40#include "CarlaProcessUtils.hpp"
52 STARTUPINFOA startupInfo;
53 carla_zeroStruct(startupInfo);
54 startupInfo.cb =
sizeof (startupInfo);
57 nullptr,
nullptr,
TRUE, CREATE_NO_WINDOW | CREATE_UNICODE_ENVIRONMENT,
129 String exe (arguments[0].unquoted());
137 for (
int i = 0;
i < arguments.
size(); ++
i)
138 if (arguments[
i].isNotEmpty())
139 argv.add (
const_cast<char*
> (arguments[
i].toRawUTF8()));
151 pref = CPU_TYPE_ARM64;
155 pref = CPU_TYPE_X86_64;
162 posix_spawnattr_t attr;
163 posix_spawnattr_init(&attr);
166 char***
const environptr = _NSGetEnviron();
168 argv.getRawDataPointer(), environptr !=
nullptr ? *environptr :
nullptr) == 0,);
169 posix_spawnattr_destroy(&attr);
171 const pid_t
result = vfork();
182 carla_terminateProcessOnParentExit(
true);
210 const int pid = waitpid (
childPID, &childState, WNOHANG|WUNTRACED);
211 return pid == 0 || ! (WIFEXITED (childState) || WIFSIGNALED (childState) || WIFSTOPPED (childState));
222 const int pid = waitpid (
childPID, &childState, WNOHANG|WUNTRACED);
225 if ( ! (WIFEXITED (childState) || WIFSIGNALED (childState) || WIFSTOPPED (childState)))
248 return ::kill (
childPID, SIGTERM) == 0;
256 const int pid = waitpid (
childPID, &childState, WNOHANG);
259 if (pid >= 0 && WIFEXITED (childState))
260 return WEXITSTATUS (childState);
349 if (
arg.containsAnyOf (
"\" "))
350 arg =
arg.replace (
"\"",
"\\\"").quoted();
368 if (args.
size() == 0)
#define CARLA_SAFE_ASSERT_RETURN(cond, ret)
Definition CarlaDefines.h:190
#define CARLA_DECLARE_NON_COPYABLE(ClassName)
Definition CarlaDefines.h:242
#define CARLA_SAFE_ASSERT_INT(cond, value)
Definition CarlaDefines.h:183
#define noexcept
Definition DistrhoDefines.h:72
float arg(const fft_t *freqs, off_t x)
Definition OscilGen.cpp:58
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
Definition StringArray.h:41
int size() const noexcept
Definition StringArray.h:97
String trim() const
Definition String.cpp:1540
const char * toRawUTF8() const
Definition String.cpp:1925
Definition juce_posix_SharedCode.h:1119
int getPID() const noexcept
Definition juce_posix_SharedCode.h:1269
~ActiveProcess()
Definition juce_posix_SharedCode.h:1184
ActiveProcess(const StringArray &arguments, int streamFlags)
Definition juce_posix_SharedCode.h:1121
bool killProcess() const noexcept
Definition juce_posix_SharedCode.h:1244
bool isRunning() noexcept
Definition juce_posix_SharedCode.h:1193
bool ok
Definition juce_win32_Threads.cpp:497
PROCESS_INFORMATION processInfo
Definition juce_win32_Threads.cpp:501
int exitCode
Definition juce_posix_SharedCode.h:1276
bool isRunning() const noexcept
Definition ChildProcess.cpp:205
int getPID() const noexcept
Definition ChildProcess.cpp:266
int childPID
Definition ChildProcess.cpp:271
~ActiveProcess()
Definition ChildProcess.cpp:200
bool terminateProcess() const noexcept
Definition ChildProcess.cpp:246
bool killProcess() noexcept
Definition ChildProcess.cpp:235
ActiveProcess(const StringArray &arguments, const Type type)
Definition ChildProcess.cpp:126
bool checkRunningAndUnsetPID() noexcept
Definition ChildProcess.cpp:217
uint32 getExitCodeAndClearPID() noexcept
Definition ChildProcess.cpp:251
bool terminate()
Definition ChildProcess.cpp:293
uint32 getExitCodeAndClearPID()
Definition ChildProcess.cpp:298
ChildProcess()
Definition ChildProcess.cpp:280
Type
Definition ChildProcess.h:47
@ TypeARM
Definition ChildProcess.h:49
@ TypeIntel
Definition ChildProcess.h:50
bool start(const String &command, Type type=TypeAny)
Definition ChildProcess.cpp:361
bool waitForProcessToFinish(int timeoutMs)
Definition ChildProcess.cpp:303
~ChildProcess()
Definition ChildProcess.cpp:281
bool isRunning() const
Definition ChildProcess.cpp:283
uint32 getPID() const noexcept
Definition ChildProcess.cpp:321
bool kill()
Definition ChildProcess.cpp:288
CarlaScopedPointer< ActiveProcess > activeProcess
Definition ChildProcess.h:106
static const water_uchar separator
Definition File.h:691
static File getCurrentWorkingDirectory()
Definition File.cpp:1395
Definition StringArray.h:41
int size() const noexcept
Definition StringArray.h:97
static StringArray fromTokens(StringRef stringToTokenise, bool preserveQuotedStrings)
Definition StringArray.cpp:369
bool containsChar(water_uchar character) const noexcept
Definition String.cpp:921
const char * toRawUTF8() const
Definition String.cpp:1925
register unsigned i
Definition inflate.c:1575
char * argv[]
Definition unzip.c:738
virtual ASIOError start()=0
CARLA_PLUGIN_EXPORT int posix_spawn(pid_t *, const char *, const posix_spawn_file_actions_t *, const posix_spawnattr_t *, char *const[], char *const[])
Definition interposer-safe.cpp:54
#define wassert(expression)
uint32 getMillisecondCounter() noexcept
Definition Time.cpp:117
Definition AudioSampleBuffer.h:33
unsigned int uint32
Definition water.h:98
#define false
Definition ordinals.h:83
char * LPSTR
Definition swell-types.h:189
unsigned int DWORD
Definition swell-types.h:164
DWORD WaitForSingleObject(HANDLE hand, DWORD msTO)
Definition swell.cpp:297
BOOL CloseHandle(HANDLE hand)
Definition swell.cpp:157
int result
Definition process.c:1455
#define void
Definition unzip.h:396
#define TRUE
Definition unzpriv.h:1295
#define FALSE
Definition unzpriv.h:1298
#define const
Definition zconf.h:137