-
1. Data: 2009-03-06 16:00:52
Temat: czy do tego potrzebny jest nowy watek?
Od: SNC <s...@i...pl>
Witam, potrzebuje napisac program, ktory wylaczal by sie po
nacisnieciu entera, robilem cos takiego while(getchar()!=10){ .... }
ale to dziala tak ze czeka ciagle na znak, a ja chcem zeby rzeczy
bedace w tej petli ciagle sie robily az to momentu nacisniecia entera.
Chodzi o to ze getchar blokuje, jak to sie da wykonac? Czy trzeba
stwozyc nowy watek w programie? Jesli tak to prosze mniej wiecej o
zarys jak to powinno wygladac.
-
2. Data: 2009-03-06 16:15:43
Temat: Re: czy do tego potrzebny jest nowy watek?
Od: Jacek Czerwinski <...@...z.pl>
SNC pisze:
> Witam, potrzebuje napisac program, ktory wylaczal by sie po
> nacisnieciu entera, robilem cos takiego while(getchar()!=10){ .... }
> ale to dziala tak ze czeka ciagle na znak, a ja chcem zeby rzeczy
> bedace w tej petli ciagle sie robily az to momentu nacisniecia entera.
> Chodzi o to ze getchar blokuje, jak to sie da wykonac? Czy trzeba
> stwozyc nowy watek w programie? Jesli tak to prosze mniej wiecej o
> zarys jak to powinno wygladac.
Bosch kolego jakie s'rodowisko ? Linux? Konsola Win ?
Nie jestem znawca; ale jakos' na getchar() wa;tków by sie ba?.
-
3. Data: 2009-03-06 16:20:24
Temat: Re: czy do tego potrzebny jest nowy watek?
Od: Wojciech Muła <w...@p...null.onet.pl.invalid>
SNC <s...@i...pl> wrote:
> Witam, potrzebuje napisac program, ktory wylaczal by sie po
> nacisnieciu entera, robilem cos takiego while(getchar()!=10){ .... }
> ale to dziala tak ze czeka ciagle na znak, a ja chcem zeby rzeczy
> bedace w tej petli ciagle sie robily az to momentu nacisniecia entera.
> Chodzi o to ze getchar blokuje, jak to sie da wykonac? Czy trzeba
> stwozyc nowy watek w programie? Jesli tak to prosze mniej wiecej o
> zarys jak to powinno wygladac.
Wątki są niepotrzebne, zerknij na to: http://en.wikipedia.org/wiki/Conio.h.
Interesuje Cię funkcja kbhit.
w.
-
4. Data: 2009-03-06 17:55:58
Temat: Re: czy do tego potrzebny jest nowy watek?
Od: SNC <s...@i...pl>
Srodowisko to raczej linux, chcialem zeby pytanie bylo bardziej
ogolne.
Jacek Czerwinski napisał(a):
> SNC pisze:
> > Witam, potrzebuje napisac program, ktory wylaczal by sie po
> > nacisnieciu entera, robilem cos takiego while(getchar()!=10){ .... }
> > ale to dziala tak ze czeka ciagle na znak, a ja chcem zeby rzeczy
> > bedace w tej petli ciagle sie robily az to momentu nacisniecia entera.
> > Chodzi o to ze getchar blokuje, jak to sie da wykonac? Czy trzeba
> > stwozyc nowy watek w programie? Jesli tak to prosze mniej wiecej o
> > zarys jak to powinno wygladac.
>
> Bosch kolego jakie s'rodowisko ? Linux? Konsola Win ?
>
> Nie jestem znawca; ale jakos' na getchar() wa;tk�w by sie ba?.
-
5. Data: 2009-03-06 18:14:36
Temat: Re: czy do tego potrzebny jest nowy watek?
Od: Jacek Czerwinski <...@...z.pl>
SNC pisze:
> Srodowisko to raczej linux, chcialem zeby pytanie bylo bardziej
> ogolne.
Z tego co wiem, na Unixach do ambitniejszej niż strumień klawiatury
używa się curses/ncurses
-
6. Data: 2009-03-06 20:04:00
Temat: Re: czy do tego potrzebny jest nowy watek?
Od: "Marcin 'Qrczak' Kowalczyk" <q...@k...org.pl>
On 6 Mar, 18:55, SNC <s...@i...pl> wrote:
> Srodowisko to raczej linux, chcialem zeby pytanie bylo bardziej
> ogolne.
Pod Linuxem nie trzeba do tego używać wątków, ale trzeba się
przestawić z stdio na API Unixa (funkcja read), przełączywszy strumień
stdin (deskryptor 0) w tryb nieblokujący:
int flags = fcntl(fd, F_GETFL);
if (flags == -1) {...}
if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1) {...}
Nie należy mieszać stdio z API Unixa dla danego pliku, a stdio nie
działa w trybie nieblokującym.