#include <netpbm/pm.h> pm_make_tmpfile(int * fdP, const char ** filenameP);
This simple example creates a temporary file, writes "hello world" to it, then writes some search patterns to it, then uses it as input to grep:
#include <netpbm/pm.h> int fd; const char * myfilename; pm_make_tmpfile_fd(&fdP, &myfilename); write(fd, "^account:\\s.*\n", 16); fprintf(fd, "^name:\\s.*\n", 13); close(fd); asprintfN(&grepCommand, "grep --file='%s' /tmp/infile >/tmp/outfile"); system(grepCommand); strfree(grepCommand); unlink(myfilename); strfree(myfilename);
This library function is part of Netpbm.
pm_make_tmpfile_fd() is analogous to pm_make_tmpfile(). The only difference is that it opens the file as a low level file, as open() would, rather than as a stream, as fopen() would.
If you don't need to access the file by name, use pm_tmpfile_fd() instead, because it's cleaner. With pm_tmpfile_fd(), the operating system always deletes the temporary file when your program exits, if the program failed to clean up after itself.
pm_tmpfile() was introduced in Netpbm 10.42 (March 2008).