Re: Question about Ctrl-C and less
От | Andrew - Supernews |
---|---|
Тема | Re: Question about Ctrl-C and less |
Дата | |
Msg-id | slrndlcfm8.2db7.andrew+nonews@trinity.supernews.net обсуждение исходный текст |
Ответ на | Question about Ctrl-C and less (Martijn van Oosterhout <kleptog@svana.org>) |
Ответы |
Re: Question about Ctrl-C and less
|
Список | pgsql-hackers |
On 2005-10-19, Kevin Brown <kevin@sysexperts.com> wrote: > Making assumptions about what the pager will do upon receipt of SIGINT > is folly as well. > > Setting up SIGINT to be ignored may be the right answer (I don't > believe it is -- see below), but if so then it needs to be done > properly. If it gets ignored prior to the popen(), then the child > will also end up ignoring it by default, because signal disposition is > inherited by child processes. If we ignore SIGINT, it should be after > the popen(), not before. I do not believe it is possible to do the signal disposition correctly and still use popen() to run the pager. (You would need to reimplement popen using raw syscalls.) > So I think the right answer here is for psql to handle SIGINT > internally by doing a pclose() first The chances that psql can do this safely approach zero. pclose() is not a signal-safe function, so it can only be called from a signal handler if you _know_ that the signal did not interrupt any non-signal-safe function. (Nor can the signal handler longjmp out in such a case, unless the code is never again going to call any unsafe function.) -- Andrew, Supernews http://www.supernews.com - individual and corporate NNTP services
В списке pgsql-hackers по дате отправления: