mirror of
https://github.com/freebsd/freebsd-src
synced 2024-07-23 03:06:48 +00:00
lockf: don't hold stdin/stdout/stderr open
None of these are essential in the lockf monitor (parent post-fork), so close them to maintain the illusion that lockf hasn't been inserted into the pipeline. This ensures that the correct effects happen on other programs in the pipeline if the locked command closes or redirects these elsewhere. The original patch used -s to close stdout/stderr rather than closing them unconditionally, but it's not clear that we really care that much. kevans dropped that part when taking the patch, patch is otherwise by listed author. PR: 112379 Reviewed by: 0mp, allanjude (both earlier version), kevans Feedback from: des Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D42713
This commit is contained in:
parent
35095fd23f
commit
18425c19ca
|
@ -157,8 +157,11 @@ main(int argc, char **argv)
|
|||
signal(SIGINT, SIG_IGN);
|
||||
signal(SIGQUIT, SIG_IGN);
|
||||
signal(SIGTERM, killed);
|
||||
fclose(stdin);
|
||||
fclose(stdout);
|
||||
fclose(stderr);
|
||||
if (waitpid(child, &status, 0) == -1)
|
||||
err(EX_OSERR, "waitpid failed");
|
||||
exit(EX_OSERR);
|
||||
return (WIFEXITED(status) ? WEXITSTATUS(status) : EX_SOFTWARE);
|
||||
}
|
||||
|
||||
|
@ -210,7 +213,7 @@ killed(int sig)
|
|||
cleanup();
|
||||
signal(sig, SIG_DFL);
|
||||
if (kill(getpid(), sig) == -1)
|
||||
err(EX_OSERR, "kill failed");
|
||||
_Exit(EX_OSERR);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue