octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gui/pager problem on MacOSX


From: Michael Goffioul
Subject: Re: gui/pager problem on MacOSX
Date: Fri, 11 Oct 2013 11:12:40 -0400

On Fri, Oct 11, 2013 at 10:54 AM, John Swensen <address@hidden> wrote:
On Fri, Oct 11, 2013 at 10:32 AM, Ben Abbott <address@hidden> wrote:
On Oct 11, 2013, at 9:58 AM, John W. Eaton wrote:

> On 10/11/2013 09:47 AM, Ben Abbott wrote:
>> I just noticed that when running the gui on MacOSX the pager isn't working. When less is waiting on input, typing at the keyboard has no effect.  The only way to recover is to pull up the task manager and kill Octave.
>>
>> Carlo, can you verify that this isn't a problem local to my build (or maybe MacOSX 10.7?)
>
> How are you starting Octave?  If it is from a terminal, does it work to type the commands for less in the terminal window?
>
> jwe

I run the gui using run-octave.

>From the terminal the pager works correctly.

Ben


Way back when I was actively working on OctaveDE in GTK and later the QT version of it, JWE helped me get some PTY magic working so that the gui terminal was the controlling terminal.

You can see the code that had to happen at startup to fork and make it work at 
I don't understand this code completely, but without it the pager would not work in the gui. Before this fix, if I launched the gui from a terminal, I was able to go back to the terminal from which it was started and control the pager that was in the QT gui terminal. I'm not sure if this is still a good/right solution, but thought I would chime in nonetheless.

The reason is that "less" reads commands directly from /dev/tty, and not from stdin (otherwise you wouldn't be able to "pipe" to "less"). So if you start octave from a terminal, the controlling terminal stays the one you started octave from. To switch to another controlling TTY (in this case, the PTY that is created to run the embedded terminal widget), you need to dissociate the octave process from its controlling terminal, in order to re-associate it with another one. But to be able to dissociate from the controlling TTY, you need to be a process group leader/owner. And so far, the only way we've found to be such a process group owner is to fork.

Michael.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]