The
close()
function allows you to close
open files and pipes. There are a number of reasons you should use it.
-
You can only have so many pipes open at a time.
(See the section "Limitations" below, which describes how such limitations
can differ from system to system.) In order to open as many pipes in
a program as you wish, you must use the
close()
function to close a pipe when you
are done with it (ordinarily, when
getline
returns 0 or -1). It takes a single argument, the same
expression used to create the pipe. Here's an example:
close("who")
-
Closing a pipe allows you to run the same command twice. For example,
you can use
date
twice to time a command.
-
Using
close()
may be necessary in order to
get an output pipe to finish its work. For example:
{
some processing of
$0 | "sort > tmpfile" }
END {
close("sort > tmpfile")
while ((getline < "tmpfile") > 0) {
do more work
}
}
-
Closing open files is necessary to keep you from exceeding your system's
limit on simultaneously open files.
We will see an example of the
close()
function in the section "Working with Multiple Files" later in this chapter.