ctrl+c,ctrl+d,ctrl+z在linux中意义

时间:2022-07-26 18:42:53
ctrl+c,ctrl+d,ctrl+z在linux中意义

#include <errno.h>#include <fcntl.h>
#include
<sys/types.h>
#include
<sys/stat.h>
#include
<stdlib.h>
#include
<string.h>

#define BUFFER_SIZE 1024

int main(int argc, char *argv[])
{
int fd;
char buffer[BUFFER_SIZE];
if(argc!=2)
{
fprintf(stderr,
"Usage:%s outfilename\n\a",argv[0]);
exit(EXIT_FAILURE);
}
if((fd=open(argv[1],O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR))==-1)
{
fprintf(stderr,
"Open %s Error:%s\n\a",argv[1],strerror(errno));
exit(EXIT_FAILURE);
}
if(dup2(fd,fileno(stdout))==-1)
{
fprintf(stderr,
"Redirect Standard Out Error: %s\n\a",strerror(errno));
exit(EXIT_FAILURE);
}
fprintf(stderr,
"Now, please input string");
fprintf(stderr,
"(To quit use CTRL+D)\n");
while(1)
{
fgets(buffer,BUFFER_SIZE,stdin);
if(feof(stdin))
break;
write(fileno(stdout),buffer,strlen(buffer));
}
exit(EXIT_SUCCESS);
}

ctrl-c 是发送 SIGINT 信号,终止一个进程

ctrl-z 是发送 SIGSTOP信号,挂起一个进程
ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF