草庐IT

并发控制

全部标签

c++ - 将 Windows C++ 服务器编写为服务或控制台应用程序

这需要讨论与在Windows732位上使用C++进行服务器开发相关的最佳实践典型要求:一个类似于“服务器”的程序,在Windows后台运行。它应该运行几天,应该在每次启动时自动运行。服务器通过TCP套接字协议(protocol)处理来自其他设备(PC、智能手机、平板电脑)的传入客户端连接服务器依次通过TCP和串行通信与连接在同一网络中的大量嵌入式设备进行通信服务器充当黑白客户端(PC、智能手机、平板电脑)和嵌入式设备的桥梁服务器管理员可以通过配置.ini文件配置服务器,然后启动服务器。到客户端的接口(interface)是TCPsocket接口(interface),客户端发送命令,服

windows - Tortoisehg 在使用 subrepos 时打开控制台窗口。我该如何阻止它?

我有一个带有git子仓库的mercurial仓库。每当我打开TortoiseHG时,都会打开多个(5-10)个控制台窗口并快速关闭(不到1秒)。我想让乌龟在不显示这些窗口的情况下工作。到目前为止我最好的线索是thisoldthread.它是针对SVN的,但它似乎走在了正确的轨道上。我可以修改python脚本,但我更愿意在不求助于它的情况下让它工作。我在Windows上使用带有openssh的msysgit。 最佳答案 看看这个类:http://hg.intevation.org/mercurial/crew/file/61c8327

c++ - 如果我过早获得窗口句柄,控制台窗口会出现问题……?

我正在制作一个必须无边界的控制台应用程序;为此,我更改了控制台窗口样式和窗口区域,如下所示。在某些时候,我遇到了一个问题,使控制台窗口通常显示大约2x1个字符的大小,或者有时完全被窃听(不可见的客户区、一些部分是白色的、一些部分是透明的、随机边框等)有人告诉我,将ShowWindow(hWnd,SW_HIDE);添加到它现在所在的行可以解决问题。确实如此。现在我想弄清楚为什么问题首先存在,以及是否有其他方法可以防止它?有人告诉我,这个问题可能会发生,因为Windows正试图在访问我的程序的同时访问窗口属性(位置、样式、大小等)。不过,我不知道这是不是真的。#include#includ

c++ - 如何确定 services.msc 管理单元是否已加载到 mmc 控制台?

我需要提示用户在程序卸载时关闭services.msc管理单元。我该怎么做? 最佳答案 您需要编写自定义操作来执行此操作。您可以使用Process检查services.msc是否加载到mmc中。[CustomAction]publicstaticActionResultCustomAction1(Sessionsession){foreach(ProcessgetProcessinProcess.GetProcesses()){if(getProcess.ProcessName.Contains("mmc")){if(getProc

python - Python 中的并发文件访问

我有一个Python脚本,它每秒几次将内容附加到一个大文件中。我还需要第二个进程,它偶尔会打开那个大文件并从中读取。我如何在Windows中执行此操作?在C++中,我可以简单地用_SH_DENYNO打开一个文件,但在Python中有什么等价物? 最佳答案 您可以在“r+b”模式下打开文件。然后,您将拥有一个可以由两个不同进程访问的文件对象。这样做需要进程之间进行一些通信(或仔细处理进程)以了解文件的当前状态。总的来说,这似乎是一种比覆盖操作系统/文件系统锁定来创建重复文件对象更好的方法,这似乎是一种不太可能结束的事情。您也可以简单地

Windows 音量控制 - 应用程序与设备

我的VoIP应用程序托管在Win7上。它包括音量控制。由于WinVista引入了通过混音器API单独控制每个应用程序音量的功能,因此我选择了它。所以,我使用:混音器打开mixerSetControlDetail-更改我的应用程序的音量级别mixerGetControlDetail-获取我的应用程序的音量级别mixerOpen调用是使用CALLBACK_WINDOW进行的,我有一个窗口设置来捕获控制消息,包括MM_MIXM_CONTROL_CHANGE。此事件触发我通过调用mixerGetControlDetail来刷新我的音量级别。这很好用。我可以转到Windows音量混合器面板并更改

c# - 编程多个自定义剪贴板,使用 Windows 剪贴板 - 很少有并发症

我正在尝试构建一个C#后台应用程序,该应用程序将Hook键盘击键(例如CAPS+(A/B/C/....))以充当许多不同剪贴板的副本。首先,我寻找了一个类似于CTRL+V的Windows方法:直接粘贴完整的字符串。我也试过SendInputs来“粘贴”,错误的想法是执行时间太长。由于没有找到任何商品,我决定使用Windows剪贴板。场景是(当我做CAPS+A时)缓存剪贴板的内容以便稍后检索模拟CTRL+C获取剪贴板的内容并将其设置为对应于'A'键的变量将剪贴板设置为默认缓存值。这在我使用记事本时效果很好。但是当在另一个应用程序上执行CTRL+C时,我在第3步得到异常CLIPBRD_E_

C# Windows 服务和控制台应用程序合二为一

我们一直在制作windows服务,我们有一个非常好的模板,带有漂亮的小命令行参数,便于安装等。这是我们想要做的事情...编写一段代码,以便编译后的代码可以作为服务或控制台应用程序运行,具体取决于您启动它的方式。我们发现这样做:staticvoidMain(string[]args){if(System.Environment.UserInteractive){//YoudoubleclickedtheexeConsole.Write("Youdoubleclickedme")}else//Windowsstartedmeasaservice.{ServiceBase[]Services

ruby - 如何检查是否在 Ruby 和 Windows 控制台中按下了箭头键

我正在使用Ruby2.1.5和Windows控制台。我需要能够在不停止执行的情况下扫描按键。我需要能够专门检测箭头键。我已经尝试了很多关于其他问题的推荐方法,但是它们都不能在Windows控制台上工作或者不能检测到箭头键。不显示方向键require'io/console'loopdopSTDIN.getchend运行没有错误,但似乎没有从输入缓冲区读取,因为在使用Ctrl-C退出程序后,所有按下的键都显示在控制台上require'io/wait'defchar_if_pressedbeginsystem("sttyraw-echo")#turnrawinputonc=nilif$std

c# - 为什么重定向标准输入会导致 stdout 不打印到新的控制台进程?

所以我试图运行一个单独的程序,使用Process.Start().程序会偶尔暂停,等待输入。我希望能够通过标准输入向此进程发送信息。我试图理解使用Windows操作系统外壳创建新进程与重定向标准输入的影响之间的区别。ExeUseShellRedirectSTDINWINDOWDisplaysOutputDisplayscmd.exe/cprogramYNYYNNYYNYYNprogram.exeYNYYNNYYNYYN重要的信息是,如果我重定向标准输入,那么屏幕上不会显示任何数据。为什么会这样?通常program.exe应该写入其stdout文件描述符。我假设Process.Start