Newsgroup: it.comp.os.linux.development
Titolo: Linux, le API, gli hook e lo Zen...

Ciao a tutti...
da poco ho riscoperto linux... e vorrei chiedervi alcune info sul discorso
development...
allora come programmatore in windows molte cose le faccio con le API,
suppongo che esse esistano anche con linux giusto?
ora mi interesserebbe fare un'applicazioncina che opportunamente
sincronizzata con cron ogni 2 ore impedisca all'utente di interagire con la
box...
in windows una cosa del genere l'avrei fatta creando degli hook di sistema a
tastiera e mouse e "annullando" ogni messaggio  prima che venga processato
dal OS...
in linux come posso fare?
e soprattutto dove posso trovare informazioni su questo genere di
programmazione (cioč a "stretto" contatto con l'OS)?
grazie
Davide

 in linux come posso fare?
ma non ti basta non far partire i getty? Così non hai nessun terminale su
cui l'utente si può loggare...

 cui l'utente si può loggare...
no.. perchè in pratica il programma serve a interrompere le attività
dell'utente per 15min ogni 2 ore....
ciao e grazie
Davide

 __declspec(dllexport) and __declspec(dllimport)
That's a complicated question.  Essentially, the MS engineers were on crack
when they designed Windows DLLs.    (C. Thompson on the Cygwin mailing list)

 la box...
Una soluzione brutale potrebbe essere:
$ ps aux
[cerchi il pid dell'X server dell'utente]
$ kill -STOP pid; sleep 900; kill -CONT pid
L'ho appena provata ed ha funzionato egregiamente. Non sara` ottimale,
ma fa molto unix ;)
Mirko


E se non si usa X o si volessero bloccare anche le altre console (come penso
sia l'intento iniziale)?
Alessandro.

 sia l'intento iniziale)?
Blocca la console usata[1], impedisci lo switch ad altre console[2] e,
in più, intercetta i segnali[3].
+++
[1] /dev/console
[2] ioctl(fd, VT_LOCKSWITCH)
[3] sigprocmask(2)
Ciao,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)              [ 
http://digilander.iol.it/ebassi/
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 sia l'intento iniziale)?
Una delle cose simpatiche dei sistemi Unix e` che si possono sospendere 
i processi senza ammazzarli, mandando loro SIGSTOP, e poi farli 
riprendere con SIGCONT.
Potresti provare con uno script che gira come root e fa un
     killall -STOP X
     cd /dev && skill -STOP tty[0-9] tty[0-9][0-9]
     ...
     killall -CONT X
     cd /dev && skill -CONT tty[0-9] tty[0-9][0-9]
Il "killall" blocca/sblocca tutti gli X server locali.
Lo "skill" blocca/sblocca tutti i processi che hanno il terminale 
indicato come terminale controllante. Puoi anche includerci "pty*" se 
vuoi bloccare/sbloccare le sessioni remote.
-- 
   |   \    \  | ___|_  |_  | ianezz a casa sua... :-)
   |  _ \  | \ | _|    /   /  Visita il LinuxTrent a
  _|_/  _\_|  _|____|___|___| 
http://www.linuxtrent.it


Bingo! Volendo riprendere la domanda iniziale: dove si trova una trattazione
sistematica delle ioctl?
Alessandro


[...]
Illuminante.
Alessandro.

 sistematica delle ioctl?
Nella documentazione, o alla macellaia nei sorgenti, del kernel.


 sia l'intento iniziale)?
Veramente m'era sembrato che l'intento fosse proprio l'altro.  Davide?
(Comunque il consiglio -STOP di Mirko e Matteo è senz'altro il più
cool. ;-))
-- 
"We should not be looking for the tools that novices can safely use.
We should be looking to increase the skill of those novices so that
they can safely use the power tools that will get the real work
done."            (Robert Martin on the Pragmatic Programmer's mailing list)

 dell'utente per 15min ogni 2 ore....
ogni 2 ore :
disabiliti le getty
fai killall delle shell aperte
dopo 15 min :
riabiliti le getty.
ciao.

 Veramente m'era sembrato che l'intento fosse proprio l'altro.  Davide?
deve bloccare tutto.. non deve essere possibile per nessun utente fare
nulla.
L'esigenza di usare un programmino era quella di poter interrompere questa
"stasi" chiedendo la pwd di root...
grazie delle dritte ;)
Davide