linux user group brescia

immagine del castello

Archivio della mailing list

R: Inviare output a tty da un processo lanciato da Cron

Gabriele Villi gvilli a iol.it
Ven 13 Ott 2000 08:44:58 UTC
At 09.48 13/10/00 +0200, you wrote:

> >  Ok... mi pare giusto. Ma dici che non c'è un riferimento, una qualche
> > variabile, che dice al sistema "questa è la tty visualizzata in questo
> > momento" ?

a colpi di apropos e di man ho trovato chvt che ti permette di attivare una 
console virtuale. Inoltre leggendo il man di console_ioctl ho trovato 
alcune informazioni interessanti. Ti mando un piccolo programmino C che 
dovrebbe fare al caso tuo. Compilalo con

cc -o whichvt whichvt.c

e ottieni il comando whichvt che stampa la struttura vt_stat (il primo 
campo e' il numero di vt attiva).

Io l'ho provato sul mio sistema e funziona.Ovviamente sotto X e via telnet 
ottieni un errore. Altrettanto ovvio e' che se ti fonde l'hd sono ..zi 
tuoi! :)

Tanto per essere chiari, la manpage di console_ioctl dice testualmente:

        WARNING: If you use  the  following  information  you  are
        going to burn yourself.

        WARNING:  ioctl's are undocumented Linux internals, liable
        to be changed without warning.  Use POSIX functions.

a buon intenditor...

ciao,
gv

PS: scusa, ho finito la mia scorta quotidiana di /* */   :)

-------------------- whichvt.c

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <stdlib.h>
#include <stdio.h>
#include </usr/include/linux/kd.h>
#include </usr/include/linux/vt.h>

int main(void) {
   int  f;
   struct vt_stat v;
   int res;

   f=open("/dev/tty",O_RDONLY);
   res=-1;
   if(f) {
      res= ioctl(f,  VT_GETSTATE, &v);
      close(f);
   }
   if(res==0) {
      printf( "%u %u %u\n",
              v.v_active,
              v.v_signal,
              v.v_state
            );
   } else {
      printf( "-1 -1 -1\n");
  }
  return res;
}








Maggiori informazioni sulla lista Lug