visualtest/include/SDL_visualtest_process.h
changeset 7924 fcb86d323770
child 11382 2c50e79b19e0
equal deleted inserted replaced
7923:d9ecdf71effb 7924:fcb86d323770
       
     1 /* See COPYING.txt for the full license governing this code. */
       
     2 /**
       
     3  * \file SDL_visualtest_process.h
       
     4  *
       
     5  * Provides cross-platfrom process launching and termination functionality.
       
     6  */
       
     7 
       
     8 #include <SDL_platform.h>
       
     9 
       
    10 #if defined(__WIN32__)
       
    11 #include <Windows.h>
       
    12 #include <Shlwapi.h>
       
    13 #elif defined(__LINUX__)
       
    14 #include <unistd.h>
       
    15 #else
       
    16 #error "Unsupported platform."
       
    17 #endif
       
    18 
       
    19 #ifndef _SDL_visualtest_process_h
       
    20 #define _SDL_visualtest_process_h
       
    21 
       
    22 /* Set up for C function definitions, even when using C++ */
       
    23 #ifdef __cplusplus
       
    24 extern "C" {
       
    25 #endif
       
    26 
       
    27 /**
       
    28  * Struct to store a platform specific handle to a process.
       
    29  */
       
    30 typedef struct SDL_ProcessInfo
       
    31 {
       
    32 //#if defined(_WIN32) || defined(__WIN32__)
       
    33 #if defined(__WIN32__)
       
    34     PROCESS_INFORMATION pi;
       
    35 //#elif defined(__linux__)
       
    36 #elif defined(__LINUX__)
       
    37     int pid;
       
    38 #endif
       
    39 } SDL_ProcessInfo;
       
    40 
       
    41 /**
       
    42  * This structure stores the exit status (value returned by main()) and
       
    43  * whether the process exited sucessfully or not.
       
    44  */
       
    45 typedef struct SDL_ProcessExitStatus
       
    46 {
       
    47     int exit_success;   /*!< Zero if the process exited successfully */
       
    48     int exit_status;    /*!< The exit status of the process. 8-bit value. */
       
    49 } SDL_ProcessExitStatus;
       
    50 
       
    51 /**
       
    52  * Launches a process with the given commandline arguments.
       
    53  *
       
    54  * \param file  The path to the executable to be launched.
       
    55  * \param args  The command line arguments to be passed to the process.
       
    56  * \param pinfo Pointer to an SDL_ProcessInfo object to be populated with
       
    57  *              platform specific information about the launched process.
       
    58  *
       
    59  * \return Non-zero on success, zero on failure.
       
    60  */
       
    61 int SDL_LaunchProcess(char* file, char* args, SDL_ProcessInfo* pinfo);
       
    62 
       
    63 /**
       
    64  * Checks if a process is running or not.
       
    65  *
       
    66  * \param pinfo Pointer to SDL_ProcessInfo object of the process that needs to be
       
    67  *              checked.
       
    68  *
       
    69  * \return 1 if the process is still running; zero if it is not and -1 if the
       
    70  *         status could not be retrieved.
       
    71  */
       
    72 int SDL_IsProcessRunning(SDL_ProcessInfo* pinfo);
       
    73 
       
    74 /**
       
    75  * Kills a currently running process.
       
    76  *
       
    77  * \param pinfo Pointer to a SDL_ProcessInfo object of the process to be terminated.
       
    78  * \param ps Pointer to a SDL_ProcessExitStatus object which will be populated
       
    79  *           with the exit status.
       
    80  *
       
    81  * \return 1 on success, 0 on failure.
       
    82  */
       
    83 int SDL_KillProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);
       
    84 
       
    85 /**
       
    86  * Cleanly exits the process represented by \c pinfo and stores the exit status
       
    87  * in the exit status object pointed to by \c ps.
       
    88  *
       
    89  * \return 1 on success, 0 on failure.
       
    90  */
       
    91 int SDL_QuitProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);
       
    92 
       
    93 /**
       
    94  * Gets the exit status of a process. If the exit status is -1, the process is
       
    95  * still running.
       
    96  *
       
    97  * \param pinfo Pointer to a SDL_ProcessInfo object of the process to be checked.
       
    98  * \param ps Pointer to a SDL_ProcessExitStatus object which will be populated
       
    99  *           with the exit status.
       
   100  *
       
   101  * \return 1 on success, 0 on failure.
       
   102  */
       
   103 int SDL_GetProcessExitStatus(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);
       
   104 
       
   105 /* Ends C function definitions when using C++ */
       
   106 #ifdef __cplusplus
       
   107 }
       
   108 #endif
       
   109 
       
   110 #endif /* _SDL_visualtest_process_h */
       
   111