OVH Cloud OVH Cloud

Inhibition de Control-D

7 réponses
Avatar
Pierre Lucas
Bonjour,

je souhaiterais inhiber "Control-C" et "Control-D" dans un script
destiné aux utilisateurs.

Pour le "Control-C", pas de problème :

trap "echo 'Control_C non permis'" 2

Mais comment faire pour le "Control-D" ?

Merci

Pierre

7 réponses

Avatar
drucbert
In article <clo328$i78$, Pierre Lucas writes:
|> Bonjour,
|>
|> je souhaiterais inhiber "Control-C" et "Control-D" dans un script
|> destiné aux utilisateurs.
|>
|> Pour le "Control-C", pas de problème :
|>
|> trap "echo 'Control_C non permis'" 2
|>
|> Mais comment faire pour le "Control-D" ?
|>
|> Merci
|>
|> Pierre
Utilisez :

set ignoreeof

en C-shell ou en Korn-shell. Attention, il y a 2 `e': ignorEEof !

Jean-Pierre

prometteur.
--
Jean-Pierre F. Drucbert (JPFD) Email: drucbert at onecert dot fr
ONERA/Centre de Toulouse SRI Tél. 05-62-25-25-15; FAX: 05-62-25-25-35

Look to windward: life never ceases to surprise.
Avatar
Stephane Chazelas
2004-10-27, 14:07(+02), Pierre Lucas:
je souhaiterais inhiber "Control-C" et "Control-D" dans un script
destiné aux utilisateurs.

Pour le "Control-C", pas de problème :

trap "echo 'Control_C non permis'" 2

Mais comment faire pour le "Control-D" ?


stty eof '' intr ''

Tu voudras peut-etre aussi interdire les Ctrl-Z Ctrl-...

Voir man stty et stty -a

Voir aussi stty -isig.

--
Stephane

Avatar
Nicolas George
Jean-Pierre Drucbert wrote in message <clo5vr$3d5$:
set ignoreeof

en C-shell ou en Korn-shell. Attention, il y a 2 `e': ignorEEof !


Ça n'est valable que pour le shell lui-même, si d'aventire il se mettait à
lire sur la ligne de commande, ce qui est souvent le cas pour un shell
interactif, mais plur rare pour un script.

Pour un blocage plus général, voir du côté de stty, en particulier eof et
intr (« stty eof "" intr "" » devrait faire l'affaire). Dans le même ordre
d'idées, il y a kill et susp à configurer.

Avatar
Stephane Chazelas
2004-10-27, 12:57(+00), Jean-Pierre Drucbert:
[...]
|> je souhaiterais inhiber "Control-C" et "Control-D" dans un script
|> destiné aux utilisateurs.
[...]

Utilisez :

set ignoreeof

en C-shell ou en Korn-shell. Attention, il y a 2 `e': ignorEEof !
[...]


Comme dans ignore end of file

Note que ca peut etre utile au prompt d'un shell, mais ca n'a
pas d'effet dans un script.

set ignoreeof

en Korn shell (ou n'importe quel shell de type Bourne) assigne
"ignoreeof" au premier "positional arguement" ($1).

En ksh (ou bash ou zsh ou tout shell POSIX conformant), c'est
set -o ignoreeof

--
Stephane

Avatar
Laurent Wacrenier
Pierre Lucas écrit:
je souhaiterais inhiber "Control-C" et "Control-D" dans un script
destiné aux utilisateurs.

Pour le "Control-C", pas de problème :

trap "echo 'Control_C non permis'" 2

Mais comment faire pour le "Control-D" ?


Qu'est ce qu'il a ^D ?
Il annonce la fin du fichier d'entrée.
Les utilisateurs sont condmané à envoyer des données au script
pour l'éternité ?

Interdire les signaux (^C, etc) n'est pas toujours une bonné idée. Si
le script plante, ils devront se connecter sur un autre terminal et
faire un "kill -9" pour se libérer.

Avatar
naddy
Pierre Lucas wrote:

je souhaiterais inhiber "Control-C" et "Control-D" dans un script
destiné aux utilisateurs.


stty intr ^- eof ^-

--
Christian "naddy" Weisgerber

Avatar
Pierre Lucas
Merci beaucoup à tous.

Pierre

stty intr ^- eof ^-