这是我在测试了一些东西后编写的一段 c 代码。
我知道这不是漏洞问题,但我不明白为什么在程序正常返回后没有刷新标准输入,此时提示返回标准输入、标准输出、标准错误。我的意思是为什么标准输入上的剩余字符在程序正常执行结束后被重定向到标准输出而不被刷新?
$cat dummy.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
int main(){
char rbuf[100];
if (read(0, rbuf,5) == -1){
perror("learn to count");
printf("errno = %d.\n", errno);
exit(1);
}
//printf("rbuf : %s\n",rbuf);
return 1;
}
这里执行:
$ gcc -o dummy dummy.c
$ ./dummy
AAAAA /bin/sh
$ /bin/sh
sh-3.2$ exit
exit
$
我想这只是打印在提示的新标准输出上的标准输入的剩余字符串。加上最后的换行符,它以某种方式模拟用户按下的输入以执行命令。这是怎么回事?我只是想知道更多。