Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2188485
  • 博文数量: 230
  • 博客积分: 9346
  • 博客等级: 中将
  • 技术积分: 3418
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-26 01:58
文章分类

全部博文(230)

文章存档

2015年(30)

2014年(7)

2013年(12)

2012年(2)

2011年(3)

2010年(42)

2009年(9)

2008年(15)

2007年(74)

2006年(36)

分类: LINUX

2010-06-29 09:45:43


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main (int argc, char **argv)
{
        int num = 0;
        char buffer[11] = {0};

        printf("num: %d\n", num);
        num = write(1, "buffer: ", 8);
        num = read(0, buffer, 10);
        printf("num: %d\n", num);
        printf("buffer: %s\n", buffer);

        return 0;
}


第一次运行:
root@platinum:/tmp
# ./a
num: 0
buffer: asdfasdf
num: 9
buffer: asdfasdf

root@platinum:/tmp
#

第二次运行:
root@platinum:/tmp
# ./a
num: 0
buffer: asdfasdfasdf
num: 10
buffer: asdfasdfas
root@platinum:/tmp
# df
文件系统             1K-块      已用      可用 已用% 挂载点
/dev/sda7             10369596   8918040   1451556  87% /
udev                     10240       284      9956   3% /dev
shm                    1028440         0   1028440   0% /dev/shm
/dev/sda1             20972824  14057852   6914972  68% /mnt/c
/dev/sda5            123893248 110845364  13047884  90% /mnt/d
root@platinum:/tmp

第一次运行时没有溢出,运行结果正常
第二次运行时缓冲区外面的 df 被当作了命令被执行了

阅读(1981) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~