#!/usr/bin/python这样做似乎还没有什么问题,两个进程都结束后用 tar tfz 看不出有问题。再这样看看:
import os,sys
dirname = os.path.dirname(os.path.abspath(sys.argv[0]))
os.chdir(dirname)
pid1 = os.fork()
if pid1 == 0:
os.system("tar cfz /tmp/sametar.tgz src")
sys.exit(0)
pid2 = os.fork()
if pid2 == 0:
os.system("tar cfz /tmp/sametar.tgz src")
sys.exit(0)
os.wait()
sh$ tar cfz /tmp/sametar1.tgz src
sh$ diff /tmp/sametar.tgz /tmp/sametar.tgz --brief
也说明两个包相同。
再看看对不同目录打包的情况:
#!/usr/bin/python这时候就暴露除问题了。这应该是一个进程资源互斥的问题。而且每次报告的出错情况可能还不一样:
import os,sys
dirname = os.path.dirname(os.path.abspath(sys.argv[0]))
os.chdir(dirname)
pid1 = os.fork()
if pid1 == 0:
os.system("tar cfz /tmp/sametar.tgz src")
sys.exit(0)
pid2 = os.fork()
if pid2 == 0:
os.system("tar cfz /tmp/sametar.tgz src_archive")
sys.exit(0)
os.wait()
sh$ tar tfz sametar.py
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors
tar tfz /tmp/sametar.tgz
src_archive/
src_archive/file1
gzip: stdin: invalid compressed data--crc error
gzip: stdin: invalid compressed data--length error
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
没有评论:
发表评论