Runs an OS command.
@param input passed to command stdin
@param input_len the length of the string passed to stdin
@param output at this location is stored the command's stdout (call free() after use)
@param output_len at this location is stored the length of command's stdout
@param file the command to run (PATH used)
@param argv arguments for the command to run
@param envp environment for the command to run (pass NULL to duplicate our environment)
@param timeout timeout in milliseconds, -1 means infinite timeout
@return 0 on success and -1 on error (also sets errno).
Runs an OS command. @param input passed to command stdin @param input_len the length of the string passed to stdin @param output at this location is stored the command's stdout (call free() after use) @param output_len at this location is stored the length of command's stdout @param file the command to run (PATH used) @param argv arguments for the command to run @param envp environment for the command to run (pass NULL to duplicate our environment) @param timeout timeout in milliseconds, -1 means infinite timeout @return 0 on success and -1 on error (also sets errno).