免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: NewCore
打印 上一主题 下一主题

各位,有了新的问题,再次麻烦大家give me a hand [复制链接]

论坛徽章:
0
31 [报告]
发表于 2007-06-06 14:57 |只看该作者
原帖由 flw2 于 2007-6-6 14:31 发表于 29楼  
tar会mkdir,你想得到dir名称还是什么?

可能是因为不了解tar,我真还不明白你要什么,我试图努力看懂你说的,但是还是不明白。

你可以写个函数声明,我可以看看我会不会实现这个函数。




to flw2:

没有冒犯的意思,没想到我的表述能力如此之差...我一直试图把问题说得明白点,尽管就像我开始说的,这个问题很怪异...

tar确实不是一个文件,但是我这样执行tar -zxvf file.tar,那么tar在执行的时候就会把tar包中的文件名输出到标准输出,如果是屏幕,就看到一行一行的解包出来的文件名.

OK,我要的就是这所有的文件名.这里关键是,我需要在tar命令执行的同时,获得这个文件名,而不是tar执行完.

我用了上面的方法,但是没有用.原因是,tar命令执行完才把包中的文件名输出到标准输出.(假如我们没有重定向,什么都没做).这是不符合我的需求的.

如果你觉得一个接口更能说明问题,那么可以认为就这样的一个接口
int my_tar(char * _tar_filename)
{
}
他做得事就是
1 解包file.tar.gz
2 同时把file.tar.gz包中的文件的名字(文件名字符串)保存到文件a.out中.

至于如何读出来,那不是问题了.现在就是这样的一个简单功能,如果是上面我列出来的方法,那就不用了.

谢谢你的关注,我期待的你的回复

论坛徽章:
0
32 [报告]
发表于 2007-06-06 15:12 |只看该作者
呵呵,别用这么严重的词,我明白你的意思了,你就是要文件名,但是却不想完之后在出来,确实很奇怪。
你现在的问题是tar的输出并没有在文件出来的同时打印出来对吗?

论坛徽章:
0
33 [报告]
发表于 2007-06-06 15:17 |只看该作者
原帖由 flw2 于 2007-6-6 15:12 发表于 32楼  
呵呵,别用这么严重的词,我明白你的意思了,你就是要文件名,但是却不想完之后在出来,确实很奇怪。
你现在的问题是tar的输出并没有在文件出来的同时打印出来对吗?



完全正确

论坛徽章:
0
34 [报告]
发表于 2007-06-06 15:22 |只看该作者
为什么不能等它完了,而且我跟踪了一下,好像是先打印的呀。


rmdir("misc.o")                         = -1 ENOTDIR (Not a directory)
unlink("misc.o")                        = 0
open("misc.o", O_WRONLY|O_CREAT|O_EXCL|O_LARGEFILE, 0644) = 4
write(4, "\37\213\10\0;\274VF\0\3\355\301\1\r\0\0\0\302\240\367O"..., 45) = 45

论坛徽章:
0
35 [报告]
发表于 2007-06-06 15:23 |只看该作者
就是说它是先打印名字,然后再生成文件的。

论坛徽章:
0
36 [报告]
发表于 2007-06-06 15:25 |只看该作者
我知道了,通常tar是行缓冲的,但是当你定向到文件a.out的时候成为全缓冲了。

论坛徽章:
0
37 [报告]
发表于 2007-06-06 15:27 |只看该作者
定向到管道也没有用。如果你非要立马取结果,那么我现在暂时有两种办法

1.伪终端
2.该tar的代码

1不需要改代码,但是需要稍微折腾一下。
2很简单

论坛徽章:
0
38 [报告]
发表于 2007-06-06 15:28 |只看该作者
楼主
你的条件,不能等待是很严格吗?要不结束之后再遍历一下多简单

论坛徽章:
0
39 [报告]
发表于 2007-06-06 15:35 |只看该作者
原帖由 flw2 于 2007-6-6 15:25 发表于 36楼  
我知道了,通常tar是行缓冲的,但是当你定向到文件a.out的时候成为全缓冲了。



是的! 不只是到a.out,重定向到管道的时候,也没有数据,后来我才发现这其实是一个问题.

论坛徽章:
0
40 [报告]
发表于 2007-06-06 15:36 |只看该作者
原帖由 flw2 于 2007-6-6 15:27 发表于 37楼  
定向到管道也没有用。如果你非要立马取结果,那么我现在暂时有两种办法

1.伪终端
2.该tar的代码

1不需要改代码,但是需要稍微折腾一下。
2很简单



现在我也只好用2种办法,还在折腾中.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP