Pohyb seekom v terminaly

Sekcia: Programovanie 11.12.2009 | 20:58
Avatar maculko   Používateľ
Cavte chcel by som sa opytat, ako je mozny pohyb a prepisovanie v terminaly. Napriklad ked instalujete aplikaciu tak postupne nabiehaju percenta tak ze sa postupne prepisuju posledne dva znaky......
skusal som to nasledovne, ale nejak sa to minulu ucinku

write(1,"a",1);
lseek(1, 0, SEEK_SET);
write(1,"b",1);

vystup bol: ab
ja by som vsak ocakaval: b
To sa mi podarilo iba ak som ako deskriptor podhodil externy subor.
    • Re: Pohyb seekom v terminaly 11.12.2009 | 21:24
      WlaSaTy   Návštevník
      Terminal je znakove zariadenie a seek na nom nie je tym padom implementovany. Rozne emulatory terminalu vsak dokazu pracovat s adresaciou kurzoru. Ak chces nieco krajsie, tak sa poobzeraj napriklad po ncurses, alebo skus ako funguje henta blbinka.
      #!/bin/sh

      typeset -i all=10
      typeset -i current=0

      echo starting
      while [ ${current} -ne ${all} ]
      do
      current=${current}+1
      sleep 1
      printf "steps complete %2i from lot of %i \r" ${current} ${all}
      done
      echo
      echo done

      PS.: skus uhadnut co znamena to "c" na zaciatku vystupu z ls -l `tty`
      • Re: Pohyb seekom v terminaly 14.12.2009 | 12:01
        Avatar maculko   Používateľ
        tak predpokladam ze 'c' znamena ze je to zariadenie :)

        ale ta blbinka u mne anejak nefici :)... ako vystup mi da toto

        >chmod 755 blbinka
        >./blbinka
        ./blbinka: 3: typeset: not found
        ./blbinka: 4: typeset: not found
        starting
        [: 12: -ne: argument expected 0

        done
        • Re: Pohyb seekom v terminaly 14.12.2009 | 20:42
          WlaSaTy   Návštevník
          :tak predpokladam ze 'c' znamena ze je to zariadenie :)
          Ano, jedna sa o znakove zariadenie (Character device).

          :./blbinka: 3: typeset: not found
          Nezabudol si na prvy riadok ktory urcuje interpreter prikazov (ten s maltezakom : #)? Nevravim ze je povinny a tak isto netvrdim ze ten posix shell ktory mas nahodeny musi byt kompatibilny s posixom, niektore prastare verzie systemov na to zabudali. Ale ak to spustis napriklad v bashi, tak to pojde.

          bash blbinka