Van-e arra valamilyen mód a "sleep" parancsot leszámítva, amivel tudnám egy bash script futását lassítani 1-2 mp-re ciklusonként.
- 2031 megtekintés
Hozzászólások
kérdés az miért nem jó a sleep parancs
- A hozzászóláshoz be kell jelentkezni
Miért nem jó a sleep? Pont erre való!
> Sol omnibus lucet.
- A hozzászóláshoz be kell jelentkezni
futtasd 8000 példányban... :)
- A hozzászóláshoz be kell jelentkezni
Szerintem nincs
- A hozzászóláshoz be kell jelentkezni
Ha 386-oson futtatod 16MB RAM-al, floppy-ról, az lassítja. :)
Másik lehetőség: kihagyod a ciklust, és crontab-ból két másodpercenként indítod. Ettől bonyolultabb lesz a script, de esetleg működhet. :)
Meg látom vannak itt más jó ötletek is. :)
Ennyire nagy gáz lenne az a sleep?
---
"A megoldásra kell koncentrálni nem a problémára."
- A hozzászóláshoz be kell jelentkezni
lehet az a gond, hogy külön processként fut a sleep. Másra nem tudok gondolni:\
- A hozzászóláshoz be kell jelentkezni
Crontabban hogyan adod meg 2 másodpercenként?
|| "Software is like sex: it's better when it's free." Linus Torvalds || Visit Gorkhaan's Homepage
- A hozzászóláshoz be kell jelentkezni
Csinálsz egy démont ami 1/1000 processzor időben fut és tkp. bash shell, aztán a .slow végű scripteket ezzel futtatod.
Úgy vagyok ezzel a tanáccsal, mint a tojással: tudom, hogy milyennek kell lennie - de tojni nem tudok ilyet.
- A hozzászóláshoz be kell jelentkezni
Egy "for" ciklusnál nembiztos hogy szerencsés a "sleep", esetleg betöltődik 1000 példányba!? :)
- A hozzászóláshoz be kell jelentkezni
Ha ez a probléma előjön, akkor valamit nagyon elkurtál;]
- A hozzászóláshoz be kell jelentkezni
Ez a megoldás jobban tetszett:
/*
* The following program sleeps for the
* number of microseconds specified in argv[1].
*/
#include
#include
int main( int argc, char **argv )
{
useconds_t microseconds;
microseconds = (useconds_t)strtol( argv[1], NULL, 0 );
if( usleep( microseconds ) == 0 ) {
return EXIT_SUCCESS;
}
return EXIT_FAILURE;
}
gcc-vel lefordítva pedig ./usleep 1000000 (ez kb 1 mp)
- A hozzászóláshoz be kell jelentkezni
nemtuom, nálam van ilyen, h usleep
; a sysvinit csomag része...
- A hozzászóláshoz be kell jelentkezni
Nem értem. Most, hogy nem sleepet, hanem usleepet teszel a ciklusba, mennyiben változott a leányzó fekvése (persze azt leszámítva, h finomabban tudsz hangolni)?
- A hozzászóláshoz be kell jelentkezni
Finomabban lehet hangolni. Ez nagyon sokat szamit, ha valahol pontos idozites kell.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Nem zavar, hogy az ezen oldal fo profiljaba vago rendszereken az idoosztasos viselkedes miatt ha *nem* realtime prioritassal futtatsz valamit, akkor nem nagyon tudod ezt a dolgot pontositani? Eleve hogyan teszteled? Mi biztositja, hogy a tesztelo gep HW-kornyezete es a valodi futtato gepe megegyezik? Mi biztositja, hogy az eles rendszer eppen nem lesz baromira leterhelve, stb?
- A hozzászóláshoz be kell jelentkezni
Termeszetesen semmi, de nyilvan, aki ennyire pontos idozitest akar, az figyel az ilyesmire is.
En elsosorban arra probaltam celozni, hogy a sleep tobb rendszeren csak masodperc finomsagu idozitest tesz lehetove, ennel finomabbat nem. Nem kell mindig valami elszallt realtime dologra gondolni, de sokszor 1 masodperc rengeteg varakozast jelent, es bash scriptben ugye nincs olyan, mint ASM-ben a halt, ami epp csak egy ciklusnyi idore all meg, teret adva a tobbi dolognak, peldaul a kepernyore irasnak.
Jo, persze, tudom, aki ilyesmit akar hasznalni, az hasznaljon GNU sleep-et, mert az erti a tizedmasodperces megallast is. De ezt a par soros C progit gyorsabb megirni.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Mar csak arra nem hallottunk semmit, hogy ha amugy 1-2 masodperces varakozas kell, akkor miert nem jo a sleep? Pedig talan az is erdekes lehet. (Radasul nem nagyon latom, hogy lehetne a korabbi felvetesemben emlegetett "tulterheli valami a rendszert" ellen vedekezni. Ha csak egyetlen user van meg rajta kivul a gepen, ha csak egyetlen szolgaltatast is futtat, mar elvileg bukta.)
- A hozzászóláshoz be kell jelentkezni
Ha valaki vmi pontos idozitesu cuccot futtat, akkor tudjon mar annyira odafigyelni a gepere, hogy ne forgasson kozben Qt-t. Egyebkent egy plusz szolgaltatas futtatasa meg nem kizaro ok, ha az nem termel szamottevoen.
A sleep jo lehet - ha van. De ha veletlen valamiert nincs (pl. a busyboxba nem kerult beforgatasra) akkor szopacs van.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Ugye most viccelsz? Ez bash script.
Bár tény, hogy finoman lehet hangolni, de ez annyira tűnik jó ötletnek, mint hangolt (és persze temperált) zongorán ródlizni a hegyoldalban, hangolatlan helyett.
- A hozzászóláshoz be kell jelentkezni
bár azt még mindig nem tudtuk meg hogy miért nem jó neked az alap sleep.
- A hozzászóláshoz be kell jelentkezni
Igen, légyszi-légyszi... nálam a man sleep: "Unlike most implementations that require NUMBER be an integer, here NUMBER may be an arbitrary floating point number." (GNU coreutils 6.9.92.4-f088d-dirty)
Persze ennek a megoldásnak a hordozhatósága némiképp megkérdőjelezhető, lehet h olyan környezet van, ahol nincs (ilyen) coreutils.
- A hozzászóláshoz be kell jelentkezni
Egy debian linuxot futtató gépről van szó (AMD Geode procis), aminek speciális a kijelzője (USB-s csatlakozása van).
C-ben lehetne igazán kihasználni a dolgokat, csak külön sdk meg minden kell hozzá és gondoltam erre a célra egyszerübb egy bash script.
Csak néhány terminál parancsot fogad el
pl.
\\033[2J - képernyőtörlés
\\033[0H - Bal felső pozició (Home)
A többi általánosságban használt parancsot nem sikerült használnom (mint pl. sortörlés)
Sajna ha egy ciklussal iratok ki a képernyőre iszonyatosan villog az egész, illetve néha megjelenik ugyanaz a sor mégegyszer előtte a [0H karakterekkel,
tehát a kijelző valamiért nem szereti a gyorsan kapott adatokat, ezért jött jól ez az usleep progi amivel microsecundumban megadott időket használhatok.
Például nálam már a 100000 mikrosec (0.1 sec) jó megoldást hozott
- A hozzászóláshoz be kell jelentkezni
> tehát a kijelző valamiért nem szereti a gyorsan kapott adatokat
Nem valami delay-t kéne inkább beállítani? Pld: http://linux.die.net/man/1/stty
- A hozzászóláshoz be kell jelentkezni
Az a baj, hogy magával a kijelzővel kommunikálni egy a fejlesztő által adott daemon/socket -en keresztül lehetséges.
Kb. echo -e "Szöveg" > /tmp/kijelzo_daemon
- A hozzászóláshoz be kell jelentkezni