English 中文(简体)
一旦两个档案记录员都关闭,是否自动免除无名管道?
原标题:Does Linux automatically free an unnamed pipe once both file descriptors have been closed?
  • 时间:2010-12-08 21:57:22
  •  标签:
  • c
  • linux
  • pipe

我正在使用一个没有名称的管道,用于父母过程与通过论坛创建的儿童进程之间的交流。 我正在使用未开张的管道功能。 h

I would assume that once both file descriptors have been closed (and in both processes), that the pipe is deallocated/freed/destroyed/etc. But I haven t found anything in the man pages that says this definitively. I am making a program that will run for a very long time, so I want to prevent memory leaks and other things of that nature.

My function body looks something like:

int pipefds[2];

pipe( pipefds );

if ( fork() == 0 ) {

    close( pipefds[1] );
    ...
    //Use pipefds[0]
    close( pipefds[0] );

} else {

    close( pipefds[0] );
    ...
    //Use pipefds[1]
    close( pipefds[1] );
}

是否可安全地假设,在这项职能终止后,该管道已经分配/放开/停用/停用/提用。

Is there any documentation that says this definitively?

谢谢。

最佳回答

rel=“noreferer”> http://www. opengroup.org/onlinepubs/009695399/Functions/close.html

When all file descriptors associated with a pipe or FIFO special file are closed, any data remaining in the pipe or FIFO will be discarded.

事实上,有没有多少资源可以自由获得,因为内部的煤炭 是“管道中的数据”,但我认为我们可以安全地假设,如果你的油轮在此之后不做任何事情,那就把你的工作推向了,而没有你的话:

问题回答

<代码>close 这就是说的。

 The close() call deletes a descriptor from the per-process object reference
 table.  If this is the last reference to the underlying object, the
 object will be deactivated.

Well, about the only thing you can do is close both ends of the pipe, right? Yes, the pipe will be deallocated once all handles to both ends of the pipe are closed.





相关问题
Fastest method for running a binary search on a file in C?

For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Tips for debugging a made-for-linux application on windows?

I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

Good, free, easy-to-use C graphics libraries? [closed]

I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...

Encoding, decoding an integer to a char array

Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...

热门标签