Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [vincent@xxxxxxxxxx: Re: Bug#205685: clone corruption]



Clint Adams <schizo@xxxxxxxxxx> writes:

> > The only way to use clone is to start it on an unused terminal,
> 
> Is this wording accurate?
> 
> Index: Doc/Zsh/mod_clone.yo
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Doc/Zsh/mod_clone.yo,v
> retrieving revision 1.1.1.8
> diff -u -r1.1.1.8 mod_clone.yo
> --- Doc/Zsh/mod_clone.yo	20 Dec 1999 11:24:39 -0000	1.1.1.8
> +++ Doc/Zsh/mod_clone.yo	28 Jul 2004 15:49:42 -0000
> @@ -16,5 +16,10 @@
>  
>  The return value of the builtin is zero in both shells if successful,
>  and non-zero on error.
> +
> +The target of tt(clone) should be an unused terminal, such as an unused virtual
> +console or a virtual terminal created by
> +
> +xterm -e sh -c 'trap : INT QUIT TSTP; tty; while :; do sleep 100000000; done'

Some words of explanation are warranted about this long xterm command
line: when doing clone on a pseudo-terminal, some other session
("session" meant as a unix session group, or SID) is already owning
the terminal. Hence the cloned zsh cannot acquire the pseudo-terminal
as a controlling tty. That means two things:

 - the job control signals will go to the sh-started-by-xterm process
   group (that's why we disable INT QUIT and TSTP with trap; otherwise
   the while loop could get suspended or killed)

 - the cloned shell will have job control disabled, and the job
   control keys (control-C, control-\ and control-Z) will not work.

This does not apply when cloning to an *unused* vc.

Cloning to an used (and unprepared) terminal will result in two
processes reading simultaneously from the same terminal, with input
bytes going randomly to either process.

Clone is mostly useful as a shell built-in replacement for openvt.

Hope that explains clone better.

Phil.



Messages sorted by: Reverse Date, Date, Thread, Author