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>ですが、それも役に立ちません。

2 番目の引数として使用fcntlして渡そうとしましたが、次のエラー メッセージが表示され続けます。F_SETPIPE_SZ

エラー: 'F_SETPIPE_SZ' が宣言されていません (この関数で最初に使用)

実はこれは必要ないことがわかったのですが、なぜ使えないのか気になります。

ありがとうございました。

Chrono Kitsune のおかげで、ここに解決策があります。

 #define _GNU_SOURCE

インクルードの前。

4

2 に答える 2

12

クロノキツネのおかげで、ここに解決策があります:

置く

#define _GNU_SOURCE

インクルードの前。

クロノキツネさんの別コメントにも注目です。

于 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 に答える