glusterfs
1#!/bin/bash
2
3function fd_available() {4for i in {1..65536}; do5if [ ! -e /proc/$$/fd/$i ]; then6echo $i;7return 0;8fi9done10
11return 1;12}
13
14function fd_open() {15local fd=$1;16local mode=$217local path=$3;18
19case $mode in20r)21eval "exec $fd<$path";;22w)23eval "exec $fd>$path";;24rw)25eval "exec $fd<>$path";;26*)27false;;28esac29}
30
31
32function fd_cat() {33local fd=$1;34
35eval "cat <&$fd";36}
37
38
39function fd_write() {40local fd=$1;41shift;42local msg="$@";43
44eval "echo $@ >&$fd";45}
46
47
48function fd_close() {49local fd=$1;50
51eval "exec $fd>&-";52}
53
54
55function fd_based_example() {56TEST fd=`fd_available`;57TEST fd_open $fd "rw" $M0/filename;58TEST fd_cat $fd; # print existing stuff59TEST fd_write $fd "new stuff"; # append60TEST fd_close $fd;61}
62