我添加了以下标题:
#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
在任何包括之前。
答案 0 :(得分:8)
答案 1 :(得分:1)
F_SETPIPE_SZ / F_GETPIPE_SZ是相对较新的。较旧的内核(例如RHEL6中使用的2.6.32)没有它们。如果你查看/usr/include/linux/fcntl.h并且没有定义这些常量,那么这个API就不会起作用了,你必须找到一些方法来绕过你正在构建的任何东西。