Search code examples
cexternal-process

How can I run an external program from C and parse its output?


I've got a utility that outputs a list of files required by a game. How can I run that utility within a C program and grab its output so I can act on it within the same program?

UPDATE: Good call on the lack of information. The utility spits out a series of strings, and this is supposed to be portable across Mac/Windows/Linux. Please note, I'm looking for a programmatic way to execute the utility and retain its output (which goes to stdout).


Solution

  • For simple problems in Unix-ish environments try popen().

    From the man page:

    The popen() function opens a process by creating a pipe, forking and invoking the shell.

    If you use the read mode this is exactly what you asked for. I don't know if it is implemented in Windows.

    For more complicated problems you want to look up inter-process communication.