首页 > 解决方案 > socketpair() 可以用来代替 pipe2() 并且应该在所有内核版本中都受支持?

问题描述

自 3.4 内核以来,仅 Linux 支持使用O_DIRECToption in 。pipe2()我有O_DIRECT不支持选项的内核 2.6。所以socketpair()可以更换pipe2()

我的代码片段:

if( pipe2( dx_evq, O_DIRECT | O_CLOEXEC ) ){perror( "pipe2 failure" );exit( EXIT_FAILURE );}

在我们的守护进程代码中,我们pipe2()使用请求的选项来调用O_DIRECT守护进程初始化过程的一部分。

我们收到以下错误:

pipe2 失败:参数无效

标签: clinux-kernelpipelinux-device-driverembedded-linux

解决方案


推荐阅读