On Wed, 16 Nov 2022 at 11:15, Ted Yu <yuzhihong@gmail.com> wrote: > On Tue, Nov 15, 2022 at 7:12 PM Japin Li <japinli@hotmail.com> wrote: >> After some rethinking, I find the origin code do not have problems. >> >> If fd is NULL or fgets() returns NULL, the process exits. Otherwise, we >> call >> pclose() to close fd. The code isn't straightforward, however, it is >> correct.
Quote: If the failure has been caused by some other error, sets the error indicator (see ferror()) on stream. The contents of the array pointed to by str are indeterminate (it may not even be null-terminated).
I think we shouldn't assume that the fd doesn't need to be closed when NULL is returned from fgets().