J'ai réussi à faire ça
echo -n " commande "> / dev / tty1
Les lettres apparaissent et le curseur se déplace, mais ce sont des "fantômes" - si vous frappez Enter, rien ne se passe (ils ne sont pas en stdin).
Éditer:
Au milieu de la capture d'écran ci-dessous, vous voyez pourquoi je vois l'utilisation de cela. (La ligne avec une légende rouge, juste en dessous de la ligne avec une légende jaune.) Comme c'est le cas actuellement, vous n'éditez pas vraiment le texte de la note; il vous est simplement demandé d'écrire un nouveau texte, qui remplacera le texte de la note que vous éditez (pas vraiment). Ainsi, j'ai pensé qu'il pourrait être remédié en collant simplement l'ancien texte dans le tty: si l'utilisateur appuie sur Entrée, aucune modification n'est apportée. (Ce programme est en Perl / MySQL, mais j'ai pensé qu'il serait plus intéressant de demander une solution générale que "comment faire cela en Perl".)
Modifier 2:
Voici le code Perl, qui utilise le code C ci-dessous (fonctionne exactement comme prévu), ainsi qu'une nouvelle capture d'écran - j'espère que cela clarifiera les choses hors de tout doute :) Encore une fois, regardez au milieu de la capture d'écran, où l'édition est effectuée au texte de la note - cette fois-ci, l'ancien texte est là, par exemple si vous vouliez juste corriger une faute de frappe, vous n'aurez pas à retaper l'intégralité du texte de la note.
my $edit_note_text = $edit_note_data[2];
print BOLD, RED, " new text: ", RESET;
system("writevt /dev/tty \"$edit_note_text\"");
my $new_text = <$in>;
$new_text = fix_input($new_text);
my $set_text = "UPDATE notes SET note = \"$new_text\" WHERE id = $edit_note_id";
$db->do($set_text);