我想弄清楚何时一个subprocess(在Windows上用CreateProcess()创build)崩溃或正常存在。 我将Unix代码移植到Windows,并有很多问题。
我在Unix上使用SIGCHLD,就像这样:
struct sigaction act; bzero(&act,sizeof(act)); act.sa_handler = sig_handler; act.sa_flags = SA_RESTART; sigaction(SIGCHLD,&act,0); void sig_handler(int signal) { int pid,status; if (signal == SIGCHLD) { while ((pid = waitpid(-1,&status,WNOHANG)) > 0) { // Remove pid from a data structure } } }
我正在研究创build一个调用WaitForMultipleObjects的新线程的解决scheme,但问题是可以随时创build新的进程,并且我不认为当创build新进程时可以中断WaitForMultipleObjects。 我不想为每个具有WaitOnSingleObject的进程产生一个新的线程(如果需要的话,我倾向于使用一个线程)。
这种情况下最好的解决scheme是什么?
如何在Windows上复制iTunes风格的窗口?
Windows – 执行没有.exe扩展名的可执行文件(.exe)
在使用Python安装Windows应用程序后重新启动服务器
C ++和Windows:SYstemTIME总是基于公历日历吗?
如何以编程方式使用Windows应用程序将本地networking上的连接代理服务器configuration到Internet
为什么Heroku不能在Windows中接受我的Gemfile.lock?
使用netUserAdd函数创buildWindows用户configuration文件
更改进程优先级不起作用
备用input设备(Midi)不会阻止WinForms应用程序中的屏幕保护程序
“标准用户”帐户上的FFDShowvideo解码器上的system.invalidCastException
实际上有一种方法可以中断WaitForMultipleObjects() 。 使用CreateEvent()创建指定的手动重置事件对象。 将事件句柄与现有的子进程句柄一起包含到WaitForMultipleObjects()中。 每次创建新的子进程时,都用SetEvent()事件。 这样,每当子进程退出(无论出于何种原因)或事件被发信号时, WaitForMultipleObjects()都会退出,然后可以根据需要更新句柄列表,并使用ResetEvent()重置该事件,然后再次调用WaitForMultipleObjects() 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。