我有一个由进程加载和文件锁定的dll,我想用更新的版本更新它。我正在寻找一种替代方法来终止进程以在更新dll之前释放文件锁。现有的事件进程仍然使用旧版本是可以的,只要新实例化的进程采用新逻辑即可。似乎我可以简单地重命名/移动dll,并且实时进程似乎仍然运行良好。这样做安全吗?如果dll的代码已经加载到进程中,为什么还需要锁定dll? 最佳答案 移动任何随机应用程序使用的所有dll并不总是可以的。某些应用程序,如asp.net,使用影子副本概念,它们实际复制dll并使用副本让您可以自由修改原始文件。在asp.net的情况下,如果您修改
我正在开发一个小型应用程序,该应用程序旨在调用一些(非常多样化的)功能,遗憾的是这些功能超出了我的控制范围,并且设计的方式让我不知道何时完成了正确的用户操作。特别是其中一些会产生一个线程来完成它们的工作,最终会在未来的某个时刻死亡。所以有些是同步实现的,有些是异步实现的,我的代码不知道它会是哪一个。我的应用程序的唯一目的是启动这些任务并在完成后终止。由于目的是自动化,我预计它会在短时间内从批处理文件中调用100次,所以我不希望这个过程停留的时间超过绝对可能的时间。因为我没有可以等待的信号,我的主线程上的ExitThread()似乎是可行的方法,这样由外部代码产生的任何线程最终都会终止进
我正在尝试枚举所有正在运行的进程EXE名称,但在XPGuest帐户上尝试此操作时遇到了麻烦。我能够使用EnumProcesses枚举所有进程ID,但是当我尝试使用PROCESS_QUERY_INFORMATION或PROCESS_VM_READ进行OpenProcess时,函数失败。我在XPGuest帐户下启动了ProcessExplorer,它能够枚举所有进程名称(尽管正如预期的那样,来自Guest用户空间之外的进程的大多数其他信息不存在)。所以,我的问题是,我如何复制ProcessExplorer魔法来获取在Guest帐户用户空间之外运行的服务和其他进程的进程名称?
我有一个可以正常运行或作为服务运行的可执行文件。在启动时,如果有错误(使用MessageBoxapi),它可能会显示错误消息。如果应用程序作为服务运行但不允许与桌面交互,这可能会导致失败。该进程可能看起来挂起。是否有一种编程方式来检测应用程序是否可以与桌面交互?然后我可以使用其他一些错误通知机制(日志文件等) 最佳答案 您可以在调用MessageBox()时指定MB_SERVICE_NOTIFICATION,这将在当前事件的session中显示消息。但是,在服务中显示消息框并不是您真正想要的。服务应该在后台运行,而不是直接与用户交互
我正在为一个发送低缓冲区通知的微处理器做一些网络编程,我有一个线程可以写入一定数量的信息。完成后,它需要进入暂停状态并等待低缓冲区通知恢复。使用windows的线程池api还是使用通过CreateThread()创建的线程更好? 最佳答案 当您的线程需要等待时,它应该开始等待一个事件。这会自动挂起线程。Windows为此提供了WaitForMultipleObjects和WaitForSingleObject函数。Linux使用条件变量或信号量。 关于c++-创建可暂停/可恢复线程的最佳
今天我一直在研究Ruby和线程。我有一个要检查的代理列表。假设10秒的超时通过一个非常大的代理列表将花费很多小时,如果我写这样的东西:proxies.eachdo|proxy|check_proxy(proxy)end我试图找出线程的第一个问题是如何同时启动多个线程。我在网上找到了一小段简洁的代码:forpageinpagesthreads就同时启动它们而言,似乎工作得很好。所以现在我可以...开始同时检查所有7000条记录?我如何转到一个文件,为每个线程取出一行,运行一批大约20个并重复该过程?我能否运行一个while循环同时启动20个线程(从文件中删除行)并一直运行直到文件为空?我
我正在用C编写一个简单的程序,它使用exec函数打开Internet浏览器。但是,在我关闭互联网浏览器之前,该程序不会终止。编写此程序以打开Internet浏览器然后结束的最佳方法是什么? 最佳答案 当您使用exec时,您的整个进程将被替换为新进程的镜像,而当前进程将不复存在。相反,预先fork一个新进程(如果需要setsid将其从父进程中分离)和然后exec新的进程镜像。fork的进程将被新的进程镜像替换,父进程将保持事件状态。如果您想让父进程保持打开状态直到子进程退出,请查看waitpid。编辑:为了将来的引用,是的,setsi
我正在用C编写一个组件,它将被几个不同的进程使用,它们都访问同一个文件。每个进程将同时访问文件的不同部分,主要用于读取,也用于写入。我想弄清楚正确的方法是:选项A:对于每个进程,为整个文件调用一次CreateFileMapping,然后在不同部分多次使用MapViewOfFile来访问它需要的部分,这意味着如果我有10个部分我想访问,我将为整个文件调用一次CreateFileMapping,端到端,然后MapViewOfFile10次,文件的每个部分一次。或选项B:对于每个要访问的每个特定部分调用CreateFileMapping和MapViewOfFile的进程,这意味着如果我有10
在WindowsXP中是否可以编写脚本来查看哪些进程/程序正在通过Internet发送/接收数据?我有完全的管理员权限,我想找到一种方法来监控我机器上的数据交换,而无需安装任何额外的软件。 最佳答案 第一步:WindowsXP同时按Windows键和R打开“运行”框。输入CMD,然后按OK。命令提示符窗口将打开:第二步在打开的命令提示符窗口中,输入以下内容:netstat-b5>activity.txt然后按回车键。(注意:要将某些内容粘贴到命令提示符中,您需要右键单击并单击粘贴。)如果您忘记以管理员身份运行提示(就像我在上面的屏幕
在Windows(最好是XP)上,当进程在特定地址(在它的虚拟地址空间中)写入时,通常可以挂起进程吗?加载的DLL执行写操作而不是进程本身的(PE)镜像中的代码这一事实使问题变得复杂。 最佳答案 您可以使用VirtualProtect和PAGE_GUARD或其他选项保护包含感兴趣地址的页面,并在地址写入时出现异常。此类异常可以由未处理的异常过滤器处理(视情况而定,应用程序可能会自行处理),或由进程外调试器应用程序处理,例如众所周知的调试器或通过API自定义应用程序调试进程。调试器应用程序可以在必要时暂停进程,或者使用快照进行小型转储