sigtstp.c

来自「unix环境高级编程 配套源代码 学习学习啊」· C语言 代码 · 共 50 行

C
50
字号
#include	<signal.h>#include	"ourhdr.h"#define	BUFFSIZE	1024static void	sig_tstp(int);intmain(void){	int		n;	char	buf[BUFFSIZE];	/* only catch SIGTSTP if we're running with a job-control shell */	if (signal(SIGTSTP, SIG_IGN) == SIG_DFL)		signal(SIGTSTP, sig_tstp);	while ( (n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0)		if (write(STDOUT_FILENO, buf, n) != n)			err_sys("write error");	if (n < 0)		err_sys("read error");	exit(0);}static voidsig_tstp(int signo)	/* signal handler for SIGTSTP */{	sigset_t	mask;	/* ... move cursor to lower left corner, reset tty mode ... */	/* unblock SIGTSTP, since it's blocked while we're handling it */	sigemptyset(&mask);	sigaddset(&mask, SIGTSTP);	sigprocmask(SIG_UNBLOCK, &mask, NULL);	signal(SIGTSTP, SIG_DFL);	/* reset disposition to default */	kill(getpid(), SIGTSTP);	/* and send the signal to ourself */		/* we won't return from the kill until we're continued */	signal(SIGTSTP, sig_tstp);	/* reestablish signal handler */	/* ... reset tty mode, redraw screen ... */	return;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?