1

プロセス間通信に非同期パイプを使用しています(簡略化のためにエラーチェックを削除しました)

int pipe_fd[2];
pipe(pipe_fd);
int fdflags = fcntl(pipe_fd[1], F_GETFL, 0);
fdflags |= O_NONBLOCK;
fcntl(pipe_fd[1], F_SETFL, fdflags);

パイプの内部バッファサイズを増やす方法を探しています。次の方法でカーネル>=2.6.35を使用できることを知っています。

fcntl(fd, F_SETPIPE_SZ, size);

または以下に書き込むことによって:

/proc/sys/fs/pipe-max-size

しかし、私はカーネル2.6.18でCentOS5に取り組んでいます。カーネル2.6.18でパイプの内部バッファサイズを増やすことは可能ですか?はいの場合、それを行う方法は?

4

3 に答える 3

1

CentoS 5のカーネルでは、パイプは64KBに固定されています

于 2012-05-22T20:29:20.957 に答える
0

Cコードでこれを実行するだけの場合を除いて、1つのオプションは、制限を設定した後にプログラムを実行するラッパーシェルスクリプトでulimit-pを使用することです。

于 2012-04-30T12:36:02.427 に答える
0
/proc/sys/fs/pipe-max-size sets the limit for fcntl F_SETPIPE_SZ

変更/proc/sys/fs/pipe-max-sizeする だけulimit -pでも違いはありません

実際に使用する必要がありますfcntl F_SETPIPE_SZ

私が見たところpipe-max-size、デフォルトは1MBで、これはクレイジーなパイプのニーズには十分すぎるはずです。

于 2013-04-24T22:15:56.510 に答える