| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | /* See LICENSE.txt for the full license governing this code. *//** * \file SDL_visualtest_process.h * * Provides cross-platfrom process launching and termination functionality. */#include <SDL_platform.h>#if defined(__WIN32__)#include <windows.h>#include <shlwapi.h>#elif defined(__LINUX__)#include <unistd.h>#else#error "Unsupported platform."#endif#ifndef SDL_visualtest_process_h_#define SDL_visualtest_process_h_/* Set up for C function definitions, even when using C++ */#ifdef __cplusplusextern "C" {#endif/** * Struct to store a platform specific handle to a process. */typedef struct SDL_ProcessInfo{//#if defined(_WIN32) || defined(__WIN32__)#if defined(__WIN32__)    PROCESS_INFORMATION pi;//#elif defined(__linux__)#elif defined(__LINUX__)    int pid;#endif} SDL_ProcessInfo;/** * This structure stores the exit status (value returned by main()) and * whether the process exited sucessfully or not. */typedef struct SDL_ProcessExitStatus{    int exit_success;   /*!< Zero if the process exited successfully */    int exit_status;    /*!< The exit status of the process. 8-bit value. */} SDL_ProcessExitStatus;/** * Launches a process with the given commandline arguments. * * \param file  The path to the executable to be launched. * \param args  The command line arguments to be passed to the process. * \param pinfo Pointer to an SDL_ProcessInfo object to be populated with *              platform specific information about the launched process. * * \return Non-zero on success, zero on failure. */int SDL_LaunchProcess(char* file, char* args, SDL_ProcessInfo* pinfo);/** * Checks if a process is running or not. * * \param pinfo Pointer to SDL_ProcessInfo object of the process that needs to be *              checked. * * \return 1 if the process is still running; zero if it is not and -1 if the *         status could not be retrieved. */int SDL_IsProcessRunning(SDL_ProcessInfo* pinfo);/** * Kills a currently running process. * * \param pinfo Pointer to a SDL_ProcessInfo object of the process to be terminated. * \param ps Pointer to a SDL_ProcessExitStatus object which will be populated *           with the exit status. * * \return 1 on success, 0 on failure. */int SDL_KillProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);/** * Cleanly exits the process represented by \c pinfo and stores the exit status * in the exit status object pointed to by \c ps. * * \return 1 on success, 0 on failure. */int SDL_QuitProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);/** * Gets the exit status of a process. If the exit status is -1, the process is * still running. * * \param pinfo Pointer to a SDL_ProcessInfo object of the process to be checked. * \param ps Pointer to a SDL_ProcessExitStatus object which will be populated *           with the exit status. * * \return 1 on success, 0 on failure. */int SDL_GetProcessExitStatus(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);/* Ends C function definitions when using C++ */#ifdef __cplusplus}#endif#endif /* SDL_visualtest_process_h_ *//* vi: set ts=4 sw=4 expandtab: */
 |