【问题标题】:is there a way to workaround closing of file descriptor cretaed using pipe function有没有办法解决关闭使用管道函数创建的文件描述符
【发布时间】:2012-04-05 04:02:00
【问题描述】:

我想知道我们是否真的可以创建一个解决方法/别名来关闭文件描述符。意思是,close(fd) 应该在与 fd(文件描述符)关联的流内部做一些事情。我们能否在不实际使用文件描述符上的关闭函数的情况下获得/提供关闭函数的功能。

我希望在我不想关闭管道的写端(使用 pipe() 函数创建)的情况下这样做,但另一端不应该知道这一点。管道的另一端应该感觉像另一端实际上是封闭的。

【问题讨论】:

  • 您能解释一下为什么需要这样做吗?

标签: c linux pipe


【解决方案1】:

也许您正在寻找shutdown 函数。但这用于全双工连接,以指示数据以一个方向结束。

也许可以关闭单向管道以从写入端使用shutdown 进行写入?从未听说过这样做。

这将是最接近以类似于关闭的方式操作连接状态的方法,而无需实际处理文件描述符。 (如果可以对这些对象进行该操作。)

你继续做豚鼠吧。 ;)

【讨论】:

  • shutdown 在套接字上运行,而不是在管道上运行。
  • @kaz: 我们可以在管道上使用关闭功能吗???正如我们的一位朋友提到的,它不能与管道一起使用
【解决方案2】:

"如果你创建一个外部可见的同名函数 作为一个系统函数,你的函数将被称为_instead_of_ 原系统功能。 "

#include<stdio.h>
int open(const char *p,int f) {
    printf("we are in our open()\n");
}
int close() {
    printf("we are in our close()\n");
}

main() {
    open("test",1);
    close();
    return 0;
}

Picked from here

【讨论】:

    猜你喜欢
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 2013-08-19
    • 2021-03-12
    相关资源
    最近更新 更多