原帖由 NewCore 于 2007-6-1 23:57 发表于 1楼
问题是这样的:
我想把普通文件的读写设置成异步模式的,
fd = open();
fd_set rfds;
int maxfd;
fcntl(fd, F_SETFL, O_NONBLOCK);
mafd = fd + 1;
FD_SET(fd, &rfds);
/*... */
int ret = ...
原帖由 NewCore 于 2007-6-2 00:24 发表于 4楼
MMMIX 你好,那么我如何来做到文件的异步读写呢?写文件不是由我控制的,但是我需要在有数据的时候,把数据读出来,该如何处理呢?谢谢,我等待你的答复。
原帖由 MMMIX 于 2007-6-2 00:25 发表于 5楼
请给出更全面详细的问题描述。
原帖由 NewCore 于 2007-6-2 00:39 发表于 6楼
先谢谢你的关注。
原始问题是这样的:执行tar命令,然后把tar输出到标准输出的文件列表截获下来,作为我们自己的程序使用。最好的方式是管道和重定向,但是因为某种原因,这种方式不可行。不可行是因为我 ...
原帖由 scutan 于 2007-6-2 10:05 发表于 7楼
你的tar结束之后system()函数才会返回.
如果你想同时进行的话,就弄两个进程吧.
原帖由 NewCore 于 2007-6-2 10:48 发表于 8楼
现在就是两个进程,一个进程执行system("tar"),另外一个进程去读文件,但是这种方式可行吗|?我测试的结果是什么都读不出来....
原帖由 NewCore 于 2007-6-2 00:39 发表于 6楼
先谢谢你的关注。
原始问题是这样的:执行tar命令,然后把tar输出到标准输出的文件列表截获下来,作为我们自己的程序使用。最好的方式是管道和重定向,但是因为某种原因,这种方式不可行。不可行是因为我 ...
原帖由 NewCore 于 2007-6-2 10:48 发表于 8楼
现在就是两个进程,一个进程执行system("tar"),另外一个进程去读文件,但是这种方式可行吗|?我测试的结果是什么都读不出来....
原帖由 scutan 于 2007-6-2 11:04 发表于 9楼
你看看你system()函数的返回值, 看其是否正确地执行了.
另外, 你在执行tar的时候, 注意你重定向的文件的路径的问题. 必要时写上绝对路径.
原帖由 MMMIX 于 2007-6-2 11:21 发表于 10楼
不要用 system,直接用 fork+exec 来执行 tar 命令,然后通过管道来传递数据。
原帖由 MMMIX 于 2007-6-2 11:28 发表于 11楼
可行的,但是在读文件的时候需要用 tail -f 命令。
原帖由 NewCore 于 2007-6-2 11:33 发表于 14楼
c代码里面怎么用tail -f命令读文件?不明白.
原帖由 MMMIX 于 2007-6-2 11:37 发表于 15楼
呃……还得用重定向,又绕回去了
当然,你也可以自己实现和 tail -f 类似的功能,这个倒是可行。
原帖由 NewCore 于 2007-6-2 12:12 发表于 16楼
我用execv和execvp试了下,问题一样,没有数据到管道...
我来看看tail -f怎么用,好不好实现。
有没有其他思路|?难道不能重定向到管道,这个还真变成impossible mission了....
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |