Plus sérieusement faire un shell, ce n'est pas réécrire des commandes,
c'est découper ta ligne en mots , les regrouper en instructions puis en pipes, ensuite c'est des coups de fork() && exec ()
Puis on modifie la table des descripteurs de fichiers pour que les pipe marchent.
Tu peux utiliser glib pour avoir un type liste chaîné tout près,
et la bibliothèque Gnu ReadLine | TermLine je ne sais plus pour avoir
une gestion sympa de l'historique ( Flèches, Ctrl-A, Ctrl-E, Ctrl-R, Ctrl-K )
La complétion avec Tab, je n'ai pas géré ça quand j'ai fait mon projet, mais c'est une bonne idée.
[^] # Re: Des idées de programme C
Posté par jmfayard . En réponse au journal Des idées de programme C. Évalué à 1.
perl -e'while (<>) { eval; print $@; } '
system "touch a"
rename "a","b"
exec "ls"
1_simple.c 5_entry.c b
open(I,"1_simple.c") ; while (<I>) { print ; if ($.>10) { break;} }
#include <gtk/gtk.h>
int main (int argc, char *argv[])
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_show (window);
gtk_main ();
return 0;
}
Plus sérieusement faire un shell, ce n'est pas réécrire des commandes,
c'est découper ta ligne en mots , les regrouper en instructions puis en pipes, ensuite c'est des coups de fork() && exec ()
Puis on modifie la table des descripteurs de fichiers pour que les pipe marchent.
Tu peux utiliser glib pour avoir un type liste chaîné tout près,
et la bibliothèque Gnu ReadLine | TermLine je ne sais plus pour avoir
une gestion sympa de l'historique ( Flèches, Ctrl-A, Ctrl-E, Ctrl-R, Ctrl-K )
La complétion avec Tab, je n'ai pas géré ça quand j'ai fait mon projet, mais c'est une bonne idée.
C'est vrai que c'est très instructif.