readlink函数的一个问题,这是BUG吗?

操作系统:

Linux-181:/ # lsb_release -a
LSB Version:    core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-x86_64:core-3.2-x86_64:core-4.0-x86_64:desktop-4.0-amd64:desktop-4.0-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.2-amd64:graphics-3.2-noarch:graphics-4.0-amd64:graphics-4.0-noarch
Distributor ID:    SUSE LINUX
Description:    SUSE Linux Enterprise Server 11 (x86_64)
Release:    11
Codename:    n/a

有如下代码:

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

int main()
{
    char buf[1024];
    //char buf[4];
    readlink("/proc/self/exe", buf, 1024);
    printf("%s\n", buf);

    return 0;
}

编译:

gcc -ob b.c

将生成的执行文件b放在根目录下运行,结果如下:

/bƹÿ
期望的是得到“/b”这个字符串,但后面多了乱码?但如果将b改名成 一个较长的名字:比如bxxxx,那么就不会出现这种情况。

 

posted on 2016-04-21 14:42  哥斯达黎加  阅读(450)  评论(0编辑  收藏  举报

导航