Precedente: , Su: Estensioni dinamiche   [Contenuti][Indice]


17.10 Esercizi

  1. Aggiungere funzioni per rendere disponibili chiamate di sistema come chown(), chmod() e umask() nelle estensioni che operano con i file viste in Codice C per eseguire chdir() e stat().
  2. Scrivere un analizzatore di input che stampi un prompt se l’input proviene da un dispositivo che sia un “terminale”. Si può usare la funzione isatty() per sapere se il file in input è un terminale. (Suggerimento: questa funzione normalmente usa parecchie risorse quando è richiamata; si tenti di chiamarla una volta sola.) Il contenuto del prompt dovrebbe provenire da una variabile che sia possibile impostare a livello di codice awk. Si può inviare il prompt allo standard error. Tuttavia, per ottenere risultati migliori, è meglio aprire un nuovo descrittore di file (o puntatore a un file) sul file /dev/tty e stampare il prompt su quel file, nel caso in cui lo standard error sia stato ridiretto.

    Perché lo standard error è una scelta migliore dello standard output per scrivere il prompt? Quale meccanismo di lettura andrebbe sostituito, quello che legge un record o quello che legge dei semplici byte?

  3. (Difficile.) Come si potrebbero gestire degli insiemi di nomi (spazi-dei-nomi) in gawk, in modo che i nomi di funzione presenti in estensioni differenti non siano in conflitto tra loro? Chi riesce a trovare uno schema di buona qualità è pregato di contattare il manutentore di gawk, per metterlo al corrente.
  4. Si scriva uno script di shell che funga da interfaccia per l’estensione “inplace”, vista in Consentire la modifica in loco dei file, in modo che il comportamento sia simile a quello del comando ‘sed -i’.

Precedente: , Su: Estensioni dinamiche   [Contenuti][Indice]