Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: pxjava 02 Srpna 2008, 11:22:28

Název: c++ a linux set
Přispěvatel: pxjava 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?
Název: Re: c++ a linux set
Přispěvatel: pxjava 04 Srpna 2008, 18:14:36
vazne nikdo nevi jak v c++ zjistit aktualni rozmery terminalu?
Název: Re: c++ a linux set
Přispěvatel: Martin - ViPEr*CZ* 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?
Název: Re: c++ a linux set
Přispěvatel: Martin Kiklhorn 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
Název: Re: c++ a linux set
Přispěvatel: shaman 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/
Název: Re: c++ a linux set
Přispěvatel: pxjava 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