我包括以下标题:
#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>,但这也无济于事。
#include <unistd.h>
我尝试使用fcntl并将其F_SETPIPE_SZ作为第二个参数传递,但我不断收到此错误消息:
fcntl
F_SETPIPE_SZ
错误:未声明“ F_SETPIPE_SZ”(此函数中的首次使用)
我实际上发现我不需要它,但是我很好奇为什么我不能使用它。
谢谢。
因此,感谢Chrono Kitsune,这是解决方案:
在任何包含之前。
因此,有了Chrono Kitsune,这就是解决方案:
F_SETPIPE_SZ / F_GETPIPE_SZ是相对较新的。较旧的内核(例如RHEL6中使用的2.6.32)没有它们。如果您查看/usr/include/linux/fcntl.h且未定义这些常量,则此API将无法正常工作,并且无论您要构建什么,都必须找到某种绕过它的方法。