草庐IT

IPC_VAR_MEN

全部标签

c++ - 通过 SendMessage 进行 IPC 时如何处理 32 位/64 位不匹配?

我有一段C++代码,它使用CommonControlsTreeView窗口消息读出树项的文本(包含在普通TVM_GETITEM中)。接收消息的TreeView处于不同的进程中,因此我为窗口消息的一个参数指向的结构使用了一点共享内存。我必须做这项工作,因为远程进程不受我的控制(我正在编写一个类似于Spy++的应用程序)。这在原则上运作良好,但如果目标进程有很大不同,则会失败:如果目标进程的代码是使用定义的UNICODE构建的,但我自己的代码没有定义,那么这两个进程将对TVITEMstructure中字符串成员的结构有不同的想法。我已经使用IsWindowUnicode调用解决了这个问题,

c++ - 同时等待套接字和 bool var 的可移植 C++11 方法

我有一个无限循环的线程,它从套接字接收和处理数据。我希望该线程阻塞(sleep),直到数据在套接字上可供读取或“退出”bool变量变为真(由不同的线程设置)。是否有可能以一种可移植的方式做到这一点,无需轮询和使用任何第三方库(当然除了套接字库)?如果无法以可移植的方式执行操作,那么在Windows下执行此操作的最佳方式是什么(仍然没有轮询和第三方库)?示例代码:boolexit=false;//or"std::atomicexit"oranythingelsevoidfn(){SOCKETs;//initsocket,establishconnection,etcfor(;;){//T

python - 在静默安装 Python 时添加到 Path var - 可能的错误?

我需要在我的应用程序包安装中被动安装Python,所以我使用以下内容:python-3.5.4-amd64.exe/passivePrependPath=1根据这个:3.1.4.InstallingWithoutUI我使用PrependPath参数,它应该将路径添加到Windows环境变量中的Path中。但是好像不行。变量没有任何变化。如果我手动开始安装并选择或取消选择添加到路径的复选框,那么一切正常。在修改当前安装时也与清除安装相同。不幸的是,我没有其他装有Win10Pro的PC来测试它。我也用Python3.6.3尝试过,结果相同。编辑:还尝试使用PowerShellStart-P

windows - COM/Automation 如何在幕后进行 IPC?

在最简单的形式中,COM允许您在应用程序中从DLL实例化类C++类。基本上它是LoadLibrary的美化包装器和一些关于接口(interface)的约定。这是使用进程内组件调用的。但是COM也支持进程外组件。如果从这样的组件实例化一个类,COM将启动一个新进程。您的对象存在于上述过程中,并且被透明地编码给您,因此您不必太在意它们的位置。它们甚至可能位于不同的计算机(DCOM)上。您还可以从已经运行的应用程序中获取对象。一个众所周知的例子是通过脚本控制MSOffice。这称为自动化(以前称为OLE自动化,对于这个术语的确切含义存在一些混淆)。有几篇很好的文章解释了(进程内)COM如何在

android-studio - 定义全局 android.widget var/val 时为 "lateinit"或 "by lazy"

定义全局android.widget变量时,例如TextView,是使用lateinit还是bylazy更可取?我最初认为使用bylazy会更好,因为它是不可变的,但我不完全确定。懒人示例:classMainActivity:AppCompatActivity(){valhelloWorldTextViewbylazy{findViewById(R.id.helloWorldTextView)asTextView}overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setCo

android-studio - 定义全局 android.widget var/val 时为 "lateinit"或 "by lazy"

定义全局android.widget变量时,例如TextView,是使用lateinit还是bylazy更可取?我最初认为使用bylazy会更好,因为它是不可变的,但我不完全确定。懒人示例:classMainActivity:AppCompatActivity(){valhelloWorldTextViewbylazy{findViewById(R.id.helloWorldTextView)asTextView}overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setCo

windows - Windows 上 IPC 的命名管道与 UDP

为什么命名管道更适合本地Windows机器上的IPC(进程间通信)而不是UDP?或者UDP有时可能在某个地方更好? 最佳答案 即使在本地主机上的UDP数据包也可能丢失。此外,由于UDP是基于数据报的并且无法保证交付,因此很难传输较大的数据block。最后,本地主机上的UDP有时会被浏览器阻止。一般来说,单机IPC通常不考虑UDP。在Windows上,我推荐内存映射文件+同步原语作为最快且可能是最简单的方法。当您管理命名管道工作时,命名管道通常运行良好,但我在这里看到很多关于如何使命名管道工作的问题(而且我还没有看到任何关于MMF的投

c++ - 在c/c++中有没有PHP的var_dump之类的东西?

这个问题在这里已经有了答案:DumpfacilityinC++likevar_dump()inPHP?(7个答案)关闭6年前。我正在寻找可用于转储大多数数据结构的API,在c/c++中有吗?

windows - 如何在 Windows 上执行非阻塞 IPC 读取?

我有一个Perl脚本,它使用外部工具(cleartool)来收集有关文件列表的信息。我想使用IPC来避免为每个文件生成一个新进程:useIPC::Open2;my($cin,$cout);my$child=open2($cout,$cin,'cleartool');返回单行的命令运行良好。例如print$cin"describe-short$file\n";my$description=;返回多行的命令让我陷入了如何使用整个响应而不被阻塞读取挂断的死胡同:print$cin"lshistory$file\n";#readandprocess$cout...我已经尝试通过fcntl为非阻

c++ - 请求有关执行 IPC/事件捕获的建议

我有一个简单的python服务器脚本,它fork出C++程序的多个实例(比如N)。C++程序生成一些需要捕获的事件。事件当前正在日志文件中捕获(每个fork进程1个日志文件)。此外,我需要定期(T分钟)获取事件在所有子进程中生成到python服务器或监听这些事件的其他程序的速率(仍然不确定)。根据这些事件的发生率,服务器可能会采取一些“react”(比如减少fork实例的数量)一些我简要看过的指示:greplogfiles-遍历正在运行的进程日志文件(.running),过滤那些在最后T分钟内生成的条目,分析数据并报告socketipc-将代码添加到c++程序以将事件发送到某个服务器程