Chinaunix首页 | 论坛 | 博客
  • 博客访问: 640598
  • 博文数量: 108
  • 博客积分: 46
  • 博客等级: 民兵
  • 技术积分: 1279
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-16 11:36
个人简介

坐井以观天

文章分类

全部博文(108)

文章存档

2014年(13)

2013年(90)

2012年(6)

分类: LINUX

2013-10-12 17:32:46


#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 被当作了命令被执行了

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