#include <stdio.h>
#include <unistd.h>
int main (int argc, char *argv[]) {
char buf[4];
int err = gethostname(buf, 4);
printf("name: %s n: %dn", buf, err); // BUG: err should be -1, and errno should give ENAMETOOLONG
return 0;
}
在OSX上,这给出:name: xyz n: 0
即使我的主机名大于3;相反,我希望err为-1,errno为ENAMETOOLONG
;
请注意,这也可能导致缓冲区溢出错误,以防用户没有意识到这个错误,并在缓冲区太短时预期错误为-1(文档说,如果缓冲区太短,