老爸我爱你 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来查找压缩时的窗口,如果窗口不存在,再执行其它操作

    评论

报告相同问题?

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真