bash直接执行溢出字符
bash directly executes overflown characters
我在尝试 C 读取函数时遇到了一些奇怪的事情。我知道文件描述符 0 表示标准输入。所以我决定使用如下所示的读取功能进行输入
#include<unistd.h>
int main(){
char buf[1];
read(0,buf,1);
return 0;
}
我用 gcc
编译了 main.c 文件
$ gcc -o main main.c
然后我执行了main
二进制然后输入了'tls'。 't' 之后的字符由 shell 解释,输出如下
$ ./main
tls
$ ls
main main.c
为什么shell直接解释溢出的输入字符?
什么都没有溢出。您的程序从 stdin 读取一个字符,然后退出。之后的任何字符都由 shell.
读取
我在尝试 C 读取函数时遇到了一些奇怪的事情。我知道文件描述符 0 表示标准输入。所以我决定使用如下所示的读取功能进行输入
#include<unistd.h>
int main(){
char buf[1];
read(0,buf,1);
return 0;
}
我用 gcc
编译了 main.c 文件$ gcc -o main main.c
然后我执行了main
二进制然后输入了'tls'。 't' 之后的字符由 shell 解释,输出如下
$ ./main
tls
$ ls
main main.c
为什么shell直接解释溢出的输入字符?
什么都没有溢出。您的程序从 stdin 读取一个字符,然后退出。之后的任何字符都由 shell.
读取