一个文档aa.txt,aa.txt是程序a的命令行文件,程序b通过改写aa.txt 来驱动a程序,aa.txt的第一个字符为标志位如果为1表示还没有执行,为0表示已经执行。要给它3个命令,现在有个问题,因为a程序有个响应过程,所以可能出现上一条还没有执行,下一条已经覆盖了,所以正确的做法是先检测aa.txt文件的第一个字符,如果为0,写下一条,如果为1等待。怎么实现呢。很郁闷

解决方案 »

  1.   

    就是aa.txt文件里面写“1你好”,软件a在界面上显示“你好”,然后把内容改成“0你好”,表面这条已经执行。现在要连续执行3条,问题是如果程序就是连续的跑,软件a还没有响应过来,已经覆盖了上一条的命令。
      

  2.   


    这个很难控制吧,因为你不知道软件a到底执行了命令没有
    如果一个大致的间隔的话,在改为0之前,sleep(毫秒);
      

  3.   

    在每写一条命令之前,都判断一下呢。没有变成0就等待。想起来逻辑很简单就是实现怎么搞呢。
    //也就是说a也会更改aa.txt?
    //读取标志
    while(s != 'a')
    {
    sleep(0); //这个主要是为了让其他线程或者进程获得时间片,不加也可以用。
    //....在这里读取标志
    }//执行下一条。