This is a discussion on Re: sigint psql within the pgsql Hackers forums, part of the PostgreSQL category; --> >> > I'm communicating with psql via a pipe stream. This works >pretty well, >> > but one problem ...
| |||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| >> > I'm communicating with psql via a pipe stream. This works >pretty well, >> > but one problem I have is trying to cancel an operation. >If I send a >> > sigint, psql dies. In looking at the source I gather this >is because >> > it assumes I'm in non-interactive mode (pset.notty is true). I was >> > wondering if there was some way to work around this short of >> > recompiling the source. I need to do the same thing on Windows. >> > >> > Thanks for any suggestions, >> >> On Unix you could run 'psql' through a pty rather than a pipe. No >> idea what the Windows equivalent would be. > >We don't have signals on win32 like we have on Unix so we >simulate them. >Not sure it is possible to signal psql like you want on Win32. There is no way so signal *psql*, as in the client side process. The signal emulation only runs in the server. You can do the same thing in the server using pg_ctl kill, but that won't work on client processes. //Magnus ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org |
| |||
| On Feb 21, 2005, at 3:00 PM, Magnus Hagander wrote: > There is no way so signal *psql*, as in the client side process. The > signal emulation only runs in the server. > > You can do the same thing in the server using pg_ctl kill, but that > won't work on client processes. Thanks to everyone for the feedback and suggestions. Since I need this to work on win32, I guess I'll just abort the stream and reconnect. The main issue with this is trying to restore any state associated with the connection (e.g. search_path). John DeSoi, Ph.D. http://pgedit.com/ Power Tools for PostgreSQL ---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) |
| |||
| Hi Magnus, On Feb 21, 2005, at 3:00 PM, Magnus Hagander wrote: > There is no way so signal *psql*, as in the client side process. The > signal emulation only runs in the server. > But is there some equivalent of pressing ctrl-C to make psql stop what it is doing? For example, through the pipe stream I may execute a \i command and the user wants to stop before the file is processed. What mechanism is used to do this on win32? I thought it could be accomplished on Unix with kill -2, hence my original question. But maybe I'm looking in the wrong place. Thanks, John DeSoi, Ph.D. http://pgedit.com/ Power Tools for PostgreSQL ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org |
| ||||
| John DeSoi wrote: > Hi Magnus, > > On Feb 21, 2005, at 3:00 PM, Magnus Hagander wrote: > > > There is no way so signal *psql*, as in the client side process. The > > signal emulation only runs in the server. > > > > But is there some equivalent of pressing ctrl-C to make psql stop what > it is doing? For example, through the pipe stream I may execute a \i > command and the user wants to stop before the file is processed. What > mechanism is used to do this on win32? I thought it could be > accomplished on Unix with kill -2, hence my original question. But > maybe I'm looking in the wrong place. Win32 doesn't have the granularity to do special signal numbers like we do on Unix, so we have to map control-C to call a special libpq function that communicates with the postmaster/backend to cancel the query. No way an outside process can do that. Your only solution would be to hack psql to accept a signal somehow to call that libpq function, and hack your client to send that signal to psql somehow. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org |
| Thread Tools | |
| Display Modes | |
|
|