老爸我爱你 2015-04-14 03:57 采纳率: 50%
浏览 2004
已结题

fork与exec,父子进程同步的问题

if (fork() == 0)
{
execlp("tar", "tar", "-zcf", "test.tar.gz", "test.txt", NULL);
}
//...父进程做其他事
//wait(NULL);
//删除test.txt文件

问题来了:
1、如何判断test.txt压缩已经完成,在实际测试时,即使加上wait(NULL),父进程也会删掉test.txt文件,导致test.tar.gz压缩的对象不存在,最终是空内容压缩包。请教如何解决
2、我将wait(NULL)此处换为sleep,可以用,但是有两个不好的地方:sleep会影响父进程处理业务速率;test.txt大小如果不定时,压缩时间也不定,sleep时间如何确定,另外,被压缩的文件在压缩时候貌似其他进程也可以删队。

  • 写回答

4条回答 默认 最新

  • WorldMobile 2015-04-14 04:33
    关注

    使用findwindow来查找压缩时的窗口,如果窗口不存在,再执行其它操作

    评论

报告相同问题?