本帖最后由 u011442510 于 2014-04-14 15:06:54 编辑

解决方案 »

  1.   

    子进程调用scanf时不能通知父进程吗,调用完scanf后再次通知父进程?
      

  2.   

    不要用scanf不要用printf用ReadFile、WriteFile句柄填写用于通信的管道句柄使用重叠io,可以监测有没有输入输出
      

  3.   


    这里讲的子进程并非我自己写的子进程,比如是windows里的ftp.exe,我们知道,ftp这个命令是需要接受用户输入用户名和密码的,所以如果我们自己写一个控制台程序启动一个ftp子进程,那么该子进程就会一直等待着从父进程写管道中传过来的数据,子进程阻塞着,由于我们编写的是父进程,所以父进程必须要知道该子进程正在等待输入,不知如何在父进程中判断。
      

  4.   

    1)、整个互斥对象(可跨进程访问)子进程:
    WaitForSingleObject(互斥对象);
    scanf();
    ReleaseMutex(互斥对象);父进程调用WaitForSingleObject()时可以设置一下超时时间,超时时间过后,返回失败,说明子进程等待用户输入,然后父进程去做别的事情,做完后再次调用WaitForSingleObject(),窥探一下子进程中用户是否输入完毕2)、可以在父进程中使用异步I/O,ReadFile/WriteFile异步调用,不会造成父进程的阻塞。