From: Harald Hanche-O. <ha...@ma...> - 2006-04-23 13:53:09
|
+ Carlos Agon <Car...@ir...>: | i want to use the function | | sb-thread:make-listener-thread | | but i don't know what is a tty-name I supose that it is something | like *stdout* but i can not get a pathname from it In which case, maybe you don't want to use it after all. I don't mean to sound facetious, but this is a function that seems to require a certain amount of expertise to use it properly. Let me try to put this in perspective: It could be that you have a serial port on your computer, and you wish to control your Lisp from that serial port. The serial port might have a name like /dev/ttyd0, which you might pass (as a string) to sb-thread:make-listener-thread. That is of course an unlikely scenario. But ttys come in a different and much more used sort: As pseudo-ttys. Try running "man pty" on your computer to learn about them. These beasts are typically used by programs like xterm, that need to emulate terminals and all the signaling capabilities associated with them, such as sending a signal to the controlled process when the user types ctrl-C, for example. For example, I type the command "tty" in an xterm, and get the response /dev/ttyp2 back. So the shell in that terminal sends its output to /dev/ttyp2, and receives its input from there. At the other end of this pseudo-tty is the master device, which is named /dev/ptyp2. The xterm process controls this end. It passes keystrokes through it, and gets output from it which it displays on the screen. So I could in principle pass "/dev/ttyp2" as an argument to sb-thread:make-listener-thread and then use this terminal window to talk to the Lisp, except that the Lisp and my shell would compete for input from /dev/ttyp2, and chaos would ensue. I suppose I could run a command from the shell that does no I/O, such as sleep 86400, but it's still anybody's guess what ctrl-C would do. What it all boils down to is this: To do anything useful with this function, you first need to get hold of an unused pseudo-tty master/slave pair, then set up a process to control the master device, perhaps doing some network I/O, and then give the name of the slave device to sb-thread:make-listener-thread. Programs I know that do this sort of thing include xterm, ssh (and its older relatives rsh and telnet), screen, and detachtty. Highly specialized programs all. Maybe you ought to tell us what you want to do, rather than what function you wish to do it with, and then perhaps someone can help. - Harald |