hoffman@hdsvx1.UUCP (01/21/87)
Someone please help me with a couple of irritating bugs that have turned up in a program I wrote. The program produces a constantly refreshed `curses' display giving the current time & date, a "new mail" flag, a list of newsgroups with new USENET articles in them, and a list of the current processes running on the machine, courtesy of `ps -uag'. There is also a command mode, which one enters via an INTERUPT (^C for me), which allows one to escape to the shell, rn, or mail, and to reset certain parameters. My problems: (1) In command mode, I do a curses `getstr' to pick up a string from the user. My documentation says that `getstr' terminates with a \n, which is what I would like to see, but I find that I have to terminate with a \000 (^@) instead. What am I doing wrong? (2) I use fork and execl to enter rn, mail or the shell from command mode, as follows: shell(location,name) char *location,*name; { int status; if (!fork()) { execl (location, name, NULL); } wait(&status); } where `location' is the actual file name (e.g., "/usr/ucb/mail") and `name' is the command name (e.g. "mail"). This works great for the shell (csh) and for rn, but for mail it doesn't appear to do anything. However, I think it is spawning a process (I can see it in my ps listing). How do I get to it? Why is mail different from rn and the shell? (3) For my `ps' display, I use `popen' to start a pipe, and read the lines from `ps' and then display them. This works fine, but every so often I get a message "/vmunix: No namelist" followed by either a hangup or a bus error. Any insights, anyone? The environment is ULTRIX, Release 2, running on a VAX/750. I will be glad to send the source code for the whole program (~400 lines) to anyone who would like to examine it in depth, but I hope that won't be necessary. -- Richard Hoffman | "They sought it with thimbles, they sought it with care, Schlumberger WS | They pursued it with forks and hope; hdsvx1!hoffman | They threatened its life with a railway share, 713-928-4750 | They charmed it with smiles and soap." (L. CARROLL)