我已经包含以下标题:
#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'未声明(首次在此函数中使用)
其实我发现我不需要这个,但是我只是好奇为什么我不能使用它。
谢谢。
所以这里的解决scheme,感谢Chrono Kitsune:Put
#define _GNU_SOURCE
之前有任何包括。
所以这是解决方案 ,感谢Chrono Kitsune :
放
#define _GNU_SOURCE
之前有任何包括。
您还应该注意Chrono Kitsune的其他评论 。
F_SETPIPE_SZ / F_GETPIPE_SZ是相对较新的。 较老的内核(例如RHEL6中使用的2.6.32)没有它们。 如果你看看/usr/include/linux/fcntl.h这些常量没有被定义,那么这个API不会起作用,你将不得不寻找一些方法绕过它,无论你正在构建什么。