Visualizzazione dei risultati da 1 a 10 su 17

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    ok .. peró in questo caso nelle slide postate prime o c'é un errore o le
    ho interpretate male io. se dai un' pcchiata mostra che dopo la pressione di enter vengono caricate dal buffer bios nel flusso stdin . e da li getchar preleva i caratteri non mostra altri buffer

  2. #2
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    ok .. peró in questo caso nelle slide postate prime o c'é un errore o le
    ho interpretate male io. se dai un' pcchiata mostra che dopo la pressione di enter vengono caricate dal buffer bios nel flusso stdin . e da li getchar preleva i caratteri non mostra altri buffer
    Sicuramente quelle dispense sono molto schematiche e semplificate, non entrano nel merito della reale implementazione della libreria di runtime del C e delle relazioni con il sistema operativo.
    Come regola generale, la generica documentazione online, anche creata ai fini didattici, è sempre da prendere con le molle. Di certo tali comportamenti sono approfonditi in ben altra maniera nella letteratura cartacea di riferimento(vedi ad esempio la prima decina di entries della sezione B).

    In genere le librerie dei compilatori C sono scritte in modo molto segregato rispetto al SO e non vanno a bypassare le varie API o Syscall, in questo caso accedendo direttamente al BIOS buffer: questo è il principio guida da tenere sempre presente in fase di apprendimento.

    Di norma la getchar() è poco più che una macro, la quale si limita a richiamare la generica getc() passandole stdin come file handle: poiché quest'ultima funzione è in grado di operare su qualsiasi file, di primo acchito non devi immaginare speciali capacità di accesso al BIOS keyboard buffer o altro, perché a questo livello non è neppure utile entrare in simili dettagli. A livello di descrizione logica e funzionale, parlando di getchar(), lo stdin deve ritenersi un file già formato a cura del sistema operativo: in effetti è didatticamente molto utile fare sempre mente locale al caso parallelo in cui lo stdin provenga effettivamente da un file di testo, con una banale redirezione da command line.

    In realtà i dettagli e le possibili varianti, come già accennato, sono molto numerosi e dovremmo andare a distinguere cosa avviene realmente sui vari DOS, Windows, GNU/linux, *BSD, brand unix vari, VMS e molto altro, distinguendo inoltre le varie implementazioni di libreria (Dinkum o piuttosto Digital Mars, Borland, Open Watcom, GCC, quindi ambienti portability oriented vs. verticalizzazioni dedicate, eccetera).

    Quello qui illustrato è lo schema logico-gerarchico e funzionale più corretto, sufficiente ad una comprensione di base del meccanismo. Per il resto, avrai tempo e modo di studiare come sono implementate le varie chiamate nei numerosi compilatori che rendono disponibili i sorgenti delle loro librerie.

    EDIT: cross-post con il buon MItaly.
    Ultima modifica di M.A.W. 1968; 10-05-2014 a 12:58
    • Un plauso a Grisha Perelman, raro esempio di genuino anticonformismo umano e scientifico.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.