Linux 不确定如何刷新缓冲区字符串x86

Linux 不确定如何刷新缓冲区字符串x86,linux,x86,buffer,overflow,flush,Linux,X86,Buffer,Overflow,Flush,下面代码的目标是对cat程序进行MIMIC。它接受一个输入,然后把它吐出来。 例如: 但现在发生的是: $ Hi how are you $ Hi how are you $ good $ good $ow are you 我的字符串没有从缓冲区中删除,因此,如果第二次输入较短,它将吐出尚未写入的额外字符。我想知道是否有人知道如何清除缓冲区,这样就不会发生这种情况。谢谢 .file "rand.c" .section .data .buffer: .sp

下面代码的目标是对cat程序进行MIMIC。它接受一个输入,然后把它吐出来。 例如:

但现在发生的是:

$ Hi how are you
$ Hi how are you
$ good
$ good
$ow are you
我的字符串没有从缓冲区中删除,因此,如果第二次输入较短,它将吐出尚未写入的额外字符。我想知道是否有人知道如何清除缓冲区,这样就不会发生这种情况。谢谢

    .file    "rand.c"

    .section    .data
.buffer: 
    .space        10
.len:
    .space      1

    .globl    _start
_start:
pushl    %ebp
movl    %esp, %ebp
andl    $-16, %esp
subl    $16, %esp

loop:    
movl    $3, %eax
movl    $1, %ebx
movl    $.buffer, %ecx
movl    $100, %edx
int    $0x80

movl    $4, %eax
movl    $1, %ebx
movl    $.buffer, %ecx
movl    $100, %edx
int    $0x80    
jmp    loop

movl    $1, %eax
movl    $0, %ebx
int    $0x80

打印字符串时,尝试将
count
edx
)设置为字符串的长度,而不是硬编码值100。@Michael,你知道如何将其设置为字符串的长度吗?
    .file    "rand.c"

    .section    .data
.buffer: 
    .space        10
.len:
    .space      1

    .globl    _start
_start:
pushl    %ebp
movl    %esp, %ebp
andl    $-16, %esp
subl    $16, %esp

loop:    
movl    $3, %eax
movl    $1, %ebx
movl    $.buffer, %ecx
movl    $100, %edx
int    $0x80

movl    $4, %eax
movl    $1, %ebx
movl    $.buffer, %ecx
movl    $100, %edx
int    $0x80    
jmp    loop

movl    $1, %eax
movl    $0, %ebx
int    $0x80