some modificaiton
用Popen代替了call，并把错误信息重新导向到log文件了