Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: c++ a linux set  (Přečteno 2904 krát)

pxjava

  • Návštěvník
  • *
  • Příspěvků: 96
    • Zobrazit profil
    • Horejsek.com
c++ a linux set
« kdy: 02 Srpna 2008, 11:22:28 »
ahoj, kdyz v terminalu zadam prikaz set, tak me to vyhodi spoustu systemovych promenych, mezi kterejma je i COLUMN a LINES, to by se siklo pro lepsi vystup programu, aby to pri malym okne "nepretejkalo" na dalsi radek a pri velkym okne to zase vyuzilo, ale nevim jak do programu tyto promeny dostat, nevite nahodou?
Ubuntu 9.10
Asus P5Q; Intel Core 2 Duo E8500; 2x 2048MB DDR2; GeForce 9600GT 512MB; SBA 7.1; Samsung SyncMaster 205bw; Logitech Wave; 2x WESTERN DIGITAL Caviar Green 1.5T a Seagate 500G
Osobni web www.horejsek.com

pxjava

  • Návštěvník
  • *
  • Příspěvků: 96
    • Zobrazit profil
    • Horejsek.com
Re: c++ a linux set
« Odpověď #1 kdy: 04 Srpna 2008, 18:14:36 »
vazne nikdo nevi jak v c++ zjistit aktualni rozmery terminalu?
Ubuntu 9.10
Asus P5Q; Intel Core 2 Duo E8500; 2x 2048MB DDR2; GeForce 9600GT 512MB; SBA 7.1; Samsung SyncMaster 205bw; Logitech Wave; 2x WESTERN DIGITAL Caviar Green 1.5T a Seagate 500G
Osobni web www.horejsek.com

Martin - ViPEr*CZ*

Re: c++ a linux set
« Odpověď #2 kdy: 04 Srpna 2008, 20:31:42 »
vazne nikdo nevi jak v c++ zjistit aktualni rozmery terminalu?
dva dni a google stále nic?

putenv(), getenv(), environ
Na co aktuální rozměry terminalu?
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

Martin Kiklhorn

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • Závislák
  • ******
  • Příspěvků: 4807
  • グーグル!ご存知ですか?
    • Zobrazit profil
    • HEJ
Re: c++ a linux set
« Odpověď #3 kdy: 04 Srpna 2008, 21:37:37 »
Tak jsem si to zkusil a radím špatně - putenv(), getenv(), environ
vám moc nepomůže.
Toto pracuje s globálními proměnnými prostředí
Kód: [Vybrat]
printenv
env

ale ne s lokálními které jsou zahrnuté do výpisu
Kód: [Vybrat]
set
jak se dostat k lokálním proměnným terminálu ze kterého byl spuštěn program netuším

hodnoty terminálu platné pří spuštění programu se mu dají se dají předat jako parametry při spuštění přes
Kód: [Vybrat]
echo $LINES
Ale v okamžiku kdy se změní velikost okna terminálu tak je poslána zpráva SIGWINCH
a pokud má bash nastaven checkwinsize=on
tak rozměry COLUMNS a LINES přepočítá.
Jak se k těmto lokálním proměnným dostat netuším.
viz ~/.bashrc
shopt -s checkwinsize
Jsou ve vašem dotazu OPRAVDU VŠECHNY vám dostupné informace o problému?
Linux user since 2007-10-11, Registered #456007
Virtual
| Distribuce
~/slozka znamená /home/"vase jmeno"/slozka
6521 69DE 0F34 FCBC FB1D  DE76 360E 52B2 F71A B8E8

shaman

  • Člen
  • **
  • Příspěvků: 128
    • Zobrazit profil
Re: c++ a linux set
« Odpověď #4 kdy: 04 Srpna 2008, 22:00:36 »
Na složitější práci s terminálem je dobrá knihovna ncurses, ale nevím, jak to má s C++. Určitě funguje v C. Zkuste se podívat sem: http://ndk-xx.sourceforge.net/

pxjava

  • Návštěvník
  • *
  • Příspěvků: 96
    • Zobrazit profil
    • Horejsek.com
Re: c++ a linux set
« Odpověď #5 kdy: 19 Srpna 2008, 21:03:34 »
kdyby se to nekomu hodilo: nahodnym brouzdanim sem nasel funkci getenv() v knihovne cstdlib ktere je predan jeden parametr a to je nazev promene (napr.: getenv("HOME");), ma to pouze jednu vadu, ze to bere jen promene pod prikazem printenv, jinak dekuju za tip na knihovnu ncurses
Ubuntu 9.10
Asus P5Q; Intel Core 2 Duo E8500; 2x 2048MB DDR2; GeForce 9600GT 512MB; SBA 7.1; Samsung SyncMaster 205bw; Logitech Wave; 2x WESTERN DIGITAL Caviar Green 1.5T a Seagate 500G
Osobni web www.horejsek.com

 


Provoz zaštiťuje spolek OpenAlt.