ターミナルのエコーオフ Cプログラミング

このページの最終変更日:2005年 6月17日

linux等のSystem V系

#include        <termio.h>

/************************************************************************
 *	ECHO ON にする							*
 ************************************************************************/
static	void	echo_on()
{
	struct	termio	buff;

	(void)ioctl( 0, TCGETA, &buff );
	buff.c_lflag |=  ECHO;
	buff.c_lflag |=  ICANON;
	(void)ioctl( 0, TCSETA, &buff );
}

/************************************************************************
 *	ECHO OFF にする							*
 ************************************************************************/
static	void	echo_off()
{
	struct	termio	buff;

	(void)ioctl( 0, TCGETA, &buff );
	buff.c_lflag &= ~ECHO;		/*  No echo	*/
	buff.c_lflag &= ~ICANON;	/*  No ICANON	*/
	(void)ioctl( 0, TCSETA, &buff );
}

Version7系、BSD系

#include        <sgtty.h>

/************************************************************************
 *	ECHO ON にする							*
 ************************************************************************/
static	void	echo_on()
{
	struct	sgttyb	buff;

	(void)ioctl( 0, TIOCGETP, &buff );
	buff.sg_flags |=  ECHO;
	buff.sg_flags &= ~CBREAK;
	(void)ioctl( 0, TIOCSETN, &buff );
}

/************************************************************************
 *	ECHO OFF にする							*
 ************************************************************************/
static	void	echo_off()
{
	struct	sgttyb	buff;

	(void)ioctl( 0, TIOCGETP, &buff );
	buff.sg_flags &= ~ECHO;		/*  No echo	*/
	buff.sg_flags |=  CBREAK;	/*  ON input process	*/
	(void)ioctl( 0, TIOCSETN, &buff );
}

ホームページに戻る 前のページに戻る
苦情・質問・感想は 小林正幸(kobamasadummy@mub.biglobe.ne.jp) まで
(メールアドレス中のdummyは削除してください。ウイルスメール対策です)