c-pal/interfaces/devdoc/pipe_requirements.md

1.3 KiB

pipe

Overview

pipe provides platform-independent primitives to work with pipes. Specifically, it supports the POSIX popen and pclose (as well as the Windows equivalents).

Exposed API

MOCKABLE_FUNCTION(, FILE*, pipe_popen, const char*, command);

MOCKABLE_FUNCTION(, int, pipe_pclose, FILE*, stream, int*, exit_code);

pipe_popen

MOCKABLE_FUNCTION(, FILE*, pipe_popen, const char*, command);

pipe_popen creates a pipe and executes a command. The pipe only supports reading.

SRS_PIPE_42_001: [ pipe_popen shall execute the command command and pipe its output to the returned FILE*. ]

SRS_PIPE_42_002: [ If any error occurs then pipe_popen shall fail and return NULL. ]

pipe_pclose

MOCKABLE_FUNCTION(, int, pipe_pclose, FILE*, stream, int*, exit_code);

pipe_pclose closes a pipe opened by pipe_popen. It returns the exit code of the process in the exit_code parameter.

SRS_PIPE_42_003: [ pipe_pclose shall close the pipe stream. ]

SRS_PIPE_42_004: [ If any error occurs then pipe_pclose shall fail and return a non-zero value. ]

SRS_PIPE_42_005: [ pipe_pclose shall store the result of the executed command in exit_code. ]

SRS_PIPE_42_006: [ pipe_pclose shall succeed and return 0. ]