F_SETPIPE_SZ未声明

时间:2014-08-20 18:25:13

标签: c linux fcntl

我添加了以下标题:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>

我也尝试过使用

#define _GNU_SOURCE

#include <unistd.h>之前,但它也无济于事。

我尝试使用fcntl并将其作为第二个参数传递给F_SETPIPE_SZ,但我不断收到此错误消息:

  

错误:'F_SETPIPE_SZ'未声明(首次使用此功能)

我实际上发现我不需要这个,但我只是好奇为什么我不能使用它。

谢谢。

所以这是解决方案,感谢Chrono Kitsune: 放

 #define _GNU_SOURCE
在任何包括之前

2 个答案:

答案 0 :(得分:8)

所以这里是solution,感谢Chrono Kitsune

#define _GNU_SOURCE
在任何包括之前

你还应该注意Chrono Kitsune的其他comment

答案 1 :(得分:1)

F_SETPIPE_SZ / F_GETPIPE_SZ是相对较新的。较旧的内核(例如RHEL6中使用的2.6.32)没有它们。如果你查看/usr/include/linux/fcntl.h并且没有定义这些常量,那么这个API就不会起作用了,你必须找到一些方法来绕过你正在构建的任何东西。