f**k 发帖数: 906 | 1 【 以下文字转载自 Linux 讨论区 】
发信人: fork (笑叹词穷,古痴今狂 终成空), 信区: Linux
标 题: 100伪币答谢Linux/Unix编程问题
发信站: BBS 未名空间站 (Sat Mar 5 18:40:00 2011, 美东)
背景:项目里面用到一个外部函数,函数只接收一个文件名,调用后将长时间写大量数
据。
任务: 需要在函数写数据的同时,就接近即时读数据。
调用函数的时候,如果文件已经存在,就fail。所以不能事先建立个同文件名的Pipe。
也曾经使用过pipe,然后dup2 那个file descriptor。问题是在调用函数以后,取不到
函数内部的file descriptor。
100伪币答谢。 |
f**k 发帖数: 906 | 2 什么方法都可以。
FIFO就是我说的Pipe的问题。那个函数只拿文件名做参数,如果文件已经存在的话,就
fail。就是说必须是新的文件名。没
有文件。 |
f**k 发帖数: 906 | 3 没用个Tee,具体如何实现?
函数库是别人的,改不了。唉 |
f**k 发帖数: 906 | 4 这书你也有?2005的还是1993的?
我研究一下tee。 |
f**k 发帖数: 906 | |
p***o 发帖数: 1252 | 6 暴力一点,直接拦截系统调用,好像LD_PRELOAD就可以干这个。
http://lca2009.linux.org.au/slides/172.pdf
【在 f**k 的大作中提到】 : 是。我再想想。
|
f**k 发帖数: 906 | 7 没明白阿。有代码看看吗?
【在 p***o 的大作中提到】 : 暴力一点,直接拦截系统调用,好像LD_PRELOAD就可以干这个。 : http://lca2009.linux.org.au/slides/172.pdf
|
t****t 发帖数: 6806 | 8 可以打开设备吗? 就是说比如打开/dev/null会fail吗?
【在 f**k 的大作中提到】 : 【 以下文字转载自 Linux 讨论区 】 : 发信人: fork (笑叹词穷,古痴今狂 终成空), 信区: Linux : 标 题: 100伪币答谢Linux/Unix编程问题 : 发信站: BBS 未名空间站 (Sat Mar 5 18:40:00 2011, 美东) : 背景:项目里面用到一个外部函数,函数只接收一个文件名,调用后将长时间写大量数 : 据。 : 任务: 需要在函数写数据的同时,就接近即时读数据。 : 调用函数的时候,如果文件已经存在,就fail。所以不能事先建立个同文件名的Pipe。 : 也曾经使用过pipe,然后dup2 那个file descriptor。问题是在调用函数以后,取不到 : 函数内部的file descriptor。
|
f**k 发帖数: 906 | 9 没试过,说说思路?
【在 t****t 的大作中提到】 : 可以打开设备吗? 就是说比如打开/dev/null会fail吗?
|
t****t 发帖数: 6806 | 10 我刚才想的是通过TTY的管道. 不过TTY的管道会有过滤(discipline), 速度也比较慢.
但是我估计打开device也一样不行.
如果不行, 我想你可以参考一下FUSE (filesystem in user space).我没仔细看, 但是
我感觉应该可以.
【在 f**k 的大作中提到】 : 没试过,说说思路?
|