[lxc-devel] procfs and unnamed pipes

Timofey.Kirillov distorhead at gmail.com
Sun Feb 3 12:27:27 UTC 2013


Hi,

I have a question about using unnamed pipes with procfs.

Suppose a chrooted environment with proc mounted as procfs. I am trying 
to use bash process substitution feature and get this:

$ cat <(echo hello)
cat: /dev/fd/63: No such file or directory

While on the normal system:
$ cat <(echo hello)
hello

As I understand, the problem is that when fuse making getattr on file 
'/dev/fd/63' - it determines that it is symlink. The next step is 
readlink, which gives something like that: /25977/fd/63 => 
pipe:[3087676]. And at the final step getattr on file 
'/25977/fd/pipe:[3087676]' gives no such file or directory.

Actually I encouter this issue while working on my own similar fuse proc 
(for jail environments). Then I find procfs, tried it out and get the 
same failure.

I am tried to change logic of getattr in the next way. First make normal 
stat of file. If it is not S_ISFIFO - make lstat. In that way the 
process hangs forever on open syscall:
$ strace cat <(echo hello)
...
open("/dev/fd/63", O_RDONLY


Is there any workaround of this problem?




More information about the lxc-devel mailing list