| /* See COPYING.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 __cplusplus |
| extern "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 */ |
| |