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,那么就不会出现这种情况。