Why "splice" doesn't splice between two non-pipes? I think such splice would be very useful (not only file-to-socket). For example, for dd, cp, cp -r. Also, it seems, the kernel already supports splice between non-pipes (do_splice_direct function), this function is just not available to userspace. (The patch is just an idea, not tested. I don't know how to actually add this feature.) == Askar Safin diff --git a/fs/splice.c b/fs/splice.c index d37431d..ffb95db 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -1394,7 +1394,7 @@ static long do_splice(struct file *in, loff_t __user *off_in, return ret; } - return -EINVAL; + return do_splice_direct(in, off_in, out, off_out, len, flags); } /*��.n��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥