我设置了写 *** 作非阻塞,所以如果缓冲区中没有足够的空间来写入,写入程序将会收到错误.
if((pipe(pipe_des)) == -1) throw PipeException();int flags = fcntl(pipe_des[1],F_GETFL,0); // set write operation non-blockingassert(flags != -1);fcntl(pipe_des[1],F_SETFL,flags | O_NONBLOCK);
现在我想将管道缓冲区大小设置为自定义值(在特定情况下为一个字).
我已经Google了,但我找不到任何有用的东西.有办法(可能符合posix)吗?
谢谢
洛伦佐
PS:我在linux下(如果可能有用)
解决方法 既然你提到你在linux上,可能不介意不可移植性,你可能对文件描述符 *** 纵器F_SETPIPE_SZ感兴趣,这可以从linux 2.6.35开始.int pipe_sz = fcntl(pipe_des[1],F_SETPIPE_SZ,sizeof(size_t));
在调用之后会发现pipe_sz == getpagesize(),因为缓冲区不能小于系统页面大小.见fcntl(2)
.
以上是内存溢出为你收集整理的c – 设置管道缓冲区大小全部内容,希望文章能够帮你解决c – 设置管道缓冲区大小所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)