Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Polskie forum (Polish) Polish OTW
  • Search

ansi C systemy operacyjne

Rozmowy nie związane ściśle z Gentoo

Moderator: SlashBeast

Post Reply
  • Print view
Advanced search
7 posts • Page 1 of 1
Author
Message
sslaughter
Tux's lil' helper
Tux's lil' helper
Posts: 106
Joined: Fri Jun 16, 2006 4:10 pm

ansi C systemy operacyjne

  • Quote

Post by sslaughter » Wed Jan 03, 2007 12:07 pm

czesc !
mam do Was pytanie.
Najpierw kroctki kod:

Code: Select all


   if (recv(sock,buff1,sizeof(buff1),0)<0){         
      perror("can't recive data! (cl)\n");
      exit(124);
   }
   printf ("%s\n",buff1);
   gettimeofday(&tv1,&tz1);
   getchar();
   gettimeofday(&tv2,&tz2);
W tym wycinku kodu chodzi mi o to zeby zmierzyc czas wcisniecia ENTERa, niestety jest maly problem. BO jak widzicie wczesniej jest funkcja recv(), a ona blokuje program do czasu otrzymania jakiejs wiadomosci.. no i w zasadzie to wszytsko byloby ok bo o to mi chodzi tylko, ze jesli uzytkownik wcisnie ENTER podczas gdy recv jeszcze nie otrzyma wiadomosci (niby jest wstryzamny porgram) to zaraz po wyswietleniu printfem tej wiadmosci program uznaje ze dostal juz ENTER (bo uzytkownik juz sobie kiolka razy wcisnal ten klawisz a system zbuforowal to (jak mniemam oczywiscie) ). Wiec moje pytanie do was jest nastepujace :
Jak moge inaczej to napisac luib co powinienem dopisac zeby nastapila blokada ENTERa do momentu wystapienia pierwszego gettimeofday()?
Szukalem nieoc po googlach i widzialem ze mozna cos kombinowac z funkcja systemowa stty, ale dokladnego rozwiazania nie znalazlem..

z gory dziekuje Wam za pomoc
Top
no4b
Bodhisattva
Bodhisattva
User avatar
Posts: 774
Joined: Sun Jan 18, 2004 12:42 pm
Location: Tarnów, Poland

  • Quote

Post by no4b » Wed Jan 03, 2007 12:38 pm

Może pokombinować z fflush? Albo z sygnałami pokombinować? Poszukaj na man 7 signal, może znajdziesz coś, szczegółów nie podam, bo dawno się tymi klockami nie bawiłem.
GTK2/GNOME - The weakest link!
Top
Raku
Bodhisattva
Bodhisattva
User avatar
Posts: 2374
Joined: Sat Feb 28, 2004 12:02 am
Location: Poland

  • Quote

Post by Raku » Wed Jan 03, 2007 12:42 pm

Moved from Polish to Polish OTW.
raku

Powered by Archlinux ;-)
Top
sslaughter
Tux's lil' helper
Tux's lil' helper
Posts: 106
Joined: Fri Jun 16, 2006 4:10 pm

  • Quote

Post by sslaughter » Wed Jan 03, 2007 1:04 pm

Po pierwsze dziekuje za odpowiedz !

hmm wiesz juz o tym myslalem... ale nie bardzo mi przychodzi do glowy jak by mozna bylo to zrealizowac
w sumie mozna byloby blokowac sygnal (np. poprzez sigprocmask() ) tylko ktory?
sam juz nie wiem
Top
aqu
Apprentice
Apprentice
User avatar
Posts: 249
Joined: Sat Nov 12, 2005 8:10 am
Location: Kalisz, Poland
Contact:
Contact aqu
Website

  • Quote

Post by aqu » Wed Jan 03, 2007 3:04 pm

pisalem cos w podobie ;] tylko ze na recvfrom();
a wygladalo to tak

Code: Select all

#define PACKET_TIMEOUT 5 // 5sec na timeout

int timeout = 0;

/*
 * Funkcjac do to pokazania,ze uplynal czas na odpowiedz.
 */
void time_out(int signum) { 
 timeout = 1;
}

void packet_func(void) {
 /*
  * Czesc gdzie wysylamy pakiet
  * ...
  */

signal(SIGALRM, &time_out); // uzycie sygnalu alarmu i dowiazanie go do naszej funkcji time_out
/* tu moze byc kod */
alarm(PACKET_TIMEOUT); // od tad zaczynamy liczyc czas do alarmu
recvfrom(); // nie chce mi sie pisac argumentow ;)

/* jesli odpowie (trzeba dac oczekiwany warunek np. ICMP_ECHOREPLY) to dajemy 
 * alarm(0);
 */

if (timeout > 0)
{
 alarm(0);
 return 1;
}

/* reszta kodu */
}
jesli pakiet zostanie dostarczony to lecimy dalej, w przeciwnym wypadku konczymy funkcje.
jestli portrzebujesz przykladu to prosze.
wersja 0.1.5 lub 0.1.6 (starsza moze zawierac bledy ;] juz nie pamietam dokladnie :P)
i przyklad masz w pliku pinghost.c
have fun
Security is like Ogres and Onions, they have layers.
Linux - Registered user #415939

adopt an unanswered post
Top
joi_
Apprentice
Apprentice
Posts: 171
Joined: Mon Mar 28, 2005 11:51 am
Contact:
Contact joi_
Website

  • Quote

Post by joi_ » Wed Jan 03, 2007 5:01 pm

możesz użyć funkcji select (man select, man select_tut) i do czasu wczytania odpowiedniej ilości danych z gniazdka (lub przekroczenia czasu), wczytywać wszystko ze standardowego wejścia i posyłać to w kosmos
Top
sslaughter
Tux's lil' helper
Tux's lil' helper
Posts: 106
Joined: Fri Jun 16, 2006 4:10 pm

  • Quote

Post by sslaughter » Thu Jan 04, 2007 10:59 am

ok dziekuje Wam wszytskim bardzo serdecznie!

Własnie to jest najfajniejesze w Gentoo, ze jest najlepsze forum, fajny system i super ludzie, ktorzytego uzywaja :D
dzieki raz jeszcze
Top
Post Reply
  • Print view

7 posts • Page 1 of 1

Return to “Polish OTW”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic