在 Linux x86 上使用 NASM
mov ecx,eax
mov edx,ebx
mov eax,3
mov ebx,0
int 80h
ret
EAX 最初有一个mov
'd db 常量,EBX 有缓冲区的长度
这是我用来从控制台读取的代码。它工作正常,除了一个问题...我要求 2 个字符,如果我超过 2 个字符并按 Enter,下次我要求输入时,那些“溢出”/额外字符将立即输入该请求,没有用户交互。如果我再次要求输入失败,这些额外的字符将被 shell 立即解释为命令。
例子:
对该读取例程的 2 次后续调用将产生:
2345
第二个输入请求不会阻止也不会提示用户输入任何内容,它只需要它可以使用的任何字符。在这两种情况下,我都要求在一个 3 字节的缓冲区上用零填充两个字符。
1 调用阅读例程:
2345
$> 45: command not found
有想法该怎么解决这个吗?我应该使用不同的系统调用吗?