putchar
Jan Scheuer
Jan.Scheuer na snake.cz
Neděle Květen 3 20:29:39 CEST 1998
Nejsem si zcela jist zda muj problem patri do teto konference, presto:
Narazil jsem na nasledujicim potiz:
Potrebuji zajistit ovladani programu zaslanim uzivatelskeho
signalu, kde obsluha signalu nabije vstup programu a ten je pote precten.
Problem :putchar nereaguje na nabiti vstupu okamzite ale az po stisku
klavesy. Nevi nekdo nahodou jak to resit?
Za pripadne ohlasy dekuji.
Priklad:
#include <stdio.h>
#include <signal.h>
void sig_10(int sig);
int main(void)
{
signal(10,sig_10);
printf("Posli mi signal 10\n");
printf("Prvni cteni main :%c:\n",getchar());
printf("Druhe cteni main :%c:\n",getchar());
printf("Treti cteni main :%c:\n",getchar());
/*
Cilem je v obsluze signalu naplnit vstupni zarizeni posloupnosti klaves,
ktere vedou k ukonceni programu (bez pritomnosti obsluhy).
Ale je tento problem:
Proc az po stisku klavesy ?
(Pri nastaveni stty -icanon) Jinak je treba stisk enter
Lze dosahnout toho aby getchar v main precetl podsunuty znak okamzite ?
Getchar stoji ve funkci __read a ta asi nezjisti ze doslo ke zmene
vstupu a proto necte. Pri stisku klavesy precte podstrceny znak a prave
zadany znak se ztrati.( pri stty -icanon)
*/
return 0;
}
void sig_10(int sig)
{
signal(10,sig_10);
printf("\nObsluha signalu 10\n");
ungetc('a',stdin);
printf("Znak vracen do stdin a precten v obsluze signalu :%c:\n",getchar());
ungetc('b',stdin);
return;
}
Scheuer Jan
Jan.Scheuer na snake.cz
tel:0467/2336
fax:0467/521105
Další informace o konferenci Linux