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
-
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?
-
vazne nikdo nevi jak v c++ zjistit aktualni rozmery terminalu?
-
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?
-
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í
printenv
env
ale ne s lokálními které jsou zahrnuté do výpisu
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
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
-
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/
-
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