6

我包括以下标题:

#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:Put

 #define _GNU_SOURCE

在任何包含之前。

4

2 回答 2

12

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

#define _GNU_SOURCE

在任何包含之前。

您还应该注意 Chrono Kitsune 的其他评论

于 2014-08-23T15:01:39.797 回答
1

F_SETPIPE_SZ/F_GETPIPE_SZ 是相对较新的。较旧的内核(例如 RHEL6 中使用的 2.6.32)没有它们。如果您查看 /usr/include/linux/fcntl.h 并且未定义这些常量,那么此 API 将无法工作,您必须找到某种方法在您正在构建的任何内容中绕过它。

于 2016-03-04T09:31:30.077 回答