jjzjj

windows - Windows Hook 的 Linux 等价物

我想知道如何表达像windowshook这样的东西在Linux中。我有一个带有各种线程的Linux应用程序。主线程当前为ctrlc安装了一个信号处理程序,捕获它并关闭应用程序。我希望应用程序中的另一个线程首先处理ctrlc事件,然后传递给主线程。 最佳答案 据我所知,这很难做到。Unix信号是原始的。默认情况下,信号会传送到随机线程。为了解决这个问题,通常采用的技巧是在除一个线程之外的所有线程中阻塞信号。最简单的方法是用pthread_sigmask阻塞main中的所有信号,然后创建线程(它将继承信号掩码),然后有一个单独的线程执行

c++ - Windows调用的DLL与主程序如何通信?

我正在尝试将SNMP代理集成到用nativeC++编写的Windows应用程序中。要使此代理成为WindowsSNMP代理的子代理,必须编写一个DLL来导出某些由WindowsSNMP服务调用的例程。到目前为止一切正常。现在这个DLL需要从应用程序中获取实际信息。我的第一个想法是让应用程序和DLL使用双方都可以访问的共享内存块,但这会使信息总是略显陈旧,最好在SNMP请求进入时运行一些代码来获取最新值。双方将读写信息。该应用程序已经有一个基于TCP的控制台接口(interface),但是对于来自SNMP客户端的非常频繁的请求,连接、查询、断开连接可能有点繁重。让DLL直接与应用程序通信

c# - 将 WaitOne 与 IPC 的命名互斥体一起使用时,可以有一个空的 while block 吗?

基本上,同一进程的多个实例会执行此操作:using(varmutex=newSystem.Threading.Mutex(false,MUTEX_NAME)){while(!mutex.WaitOne(100)){/*waittoacquiremutexfromotherprocess*/}try{doSynchronizedWork();}finally{mutex.ReleaseMutex();}}会不会有什么坑?进程可以在不释放互斥量的情况下退出吗?如果发生这种情况,是否会抛出AbandonedMutexException?或者另一个进程会获取互斥锁吗?还有别的吗?编辑:看起来正

linux - 操作系统内核是否以与 IPC 相同的方式与进程通信?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion进程使用variouswaysofIPC(interprocesscommunication)与另一个进程通信,例如共享内存、消息传递、信号?我了解到anOSkernelcancommunicatewithaprocessusingsignals,如果我是对的,通过相同的信号发出信号也是IPC的一种方式。操作系统内核是否使用其他IPC方式(例如共享内存、消息传递)与一个或多个进程通信?如果需要具体一点,我

linux - Windows IPC 模拟 Linux Unix 域和 Netlink 套接字

在Linux上,用户态进程和服务之间的IPC相当常见的方法是,例如,套接字接口(interface)(Unix域或网络链接)。简单地说——这在Windows中的模拟是什么?用户态进程如何与服务通信?准备阶段:假设我有一个正在运行的后台服务来监视网络上的设备。如果我想编写一个程序来利用此服务提供的服务,执行此操作的常见“Windows方式”是什么?如果我在这里完全偏离基础,Windows服务可以在Windows操作系统上扩展自身以便其他进程可能知道它正在主动监听连接的常见方式是什么? 最佳答案 Windows有命名管道,"Anamed

C#/.NET : Reporting subprocess state to the parent service

我目前有一个运行多个子进程的服务(使用System.Diagnostics.Process)。每个子流程可以运行数小时并处于特定的预定义状态(想想“开始”、“工作”、“清理”等-完全预定义,无需报告附加到每个状态的自定义数据)。每个进程不能是单独的Windows服务(可能的状态比Windows服务状态多)。我需要以某种方式将此状态报告给父服务。所有进程都在同一台Windows机器上运行。我需要能够从其他进程(不是由服务启动的进程)查询子进程状态,并更新有关来自这些子进程的每个子进程状态的父服务。每个进程都有一个唯一的ID,因此其他进程可以轻松读取状态,而无需自己管理进程。所有进程共享一

c++ - 移至 64 位操作系统时共享内存性能降低

我遇到了在64位Windows上运行的32位旧版应用程序的问题。有问题的应用程序使用CreateFileMapping创建共享内存。当它在64位Windows上运行时,任何从另一个进程访问此共享内存的尝试都需要大约1秒。共享内存是使用页面保护标志创建的:flProtect=PAGE_READONLY|SEC_NOCACHE|SEC_COMMIT;当使用以下方法创建相同的内存时:flProtect=PAGE_READONLY|SEC_COMMIT;问题消失了。目前这种解决方法是可以接受的,但我们确实有一些设备需要设置SEC_NOCACHE标志。谁能告诉我为什么在这种情况下SEC_NOCA

node.js - 在 Windows 中发送 SIGUSR1 IPC

我有以下NodeJS代码:setInterval(function(){},1e6);process.on('SIGUSR1',function(){console.log('Gotasignal');});在Unix中,我应该能够使用kill-sSIGUSR11234来发送这个信号。Windows没有kill命令,我可以看到Powershell有,但它似乎没有类似-s的选项。NAMEStop-ProcessSYNTAXStop-Process[-Id][-PassThru][-Force][-WhatIf][-Confirm][]Stop-Process-Name[-PassThru

windows - IPC 端口范围

IPC可以通过TCP/IP套接字完成。windows下程序间的本地IPC应该使用哪个端口范围?我使用的是哪个Windows版本重要吗?如果我想跨平台兼容,在Linux下有什么不同吗?我用什么语言写有关系吗?IPC是否在本地有关系吗? 最佳答案 原则上,如果您的程序要被广泛使用,您应该根据RFC6335获得IANA分配给您的端口号。.如果您不符合分配条件,您的程序应该在运行时在49152-65535范围内选择一个未使用的端口,并通过其他方式将此端口号传递给其他进程。在实践中,您通常可以使用1024-49151范围内任何不常用的端口,但

windows - 如何在 Windows 中组合 GUI 应用程序

我有一个使用Qt框架(当前版本3.3.5,可能会更改为Qt4)的WindowsGUI应用程序。我想在主应用程序中组合其他WindowsGUI应用程序。由于一些我无法控制的限制,我不能直接在主应用程序中使用小部件。最终布局应如下所示:目前我正在使用Hosting.exeapplicationsintoadialog中概述的方法.为了传递子应用程序的HWND,我在进程之间使用了自己的IPC。然后,我需要使用在子窗口上调用::MoveWindow的QtresizeEvent转发调整大小事件。是否有更好或更通用的机制来执行此操作?有人建议我使用ActiveX,但我对这项技术还不够熟悉。