Articles of 处理

运行Processing SimpleOpenNi深度图像示例后,Xbox 360的Kinect冻结并断开与USB的连接

请帮忙 我一直在试图设置kinect XBOX 360在Ubuntu上运行,以开始开发一个应用程序来控制一个类人机器人。 在过去的四天中,我一直在search,下载,安装和尝试几十个库和驱动程序,以获得在Ubuntu上的工作。 一开始没有任何工作,我只能用“Camorama”和“guvcview”读取RGB相机,不pipe我试图运行什么库或驱动程序。最后,我安装了一个新的Ubuntu副本,并使用libfreenect库突触(我有点新手),我也安装了下列软件包 https://code.google.com/p/simple-openni/downloads/detail?name=OpenNI_NITE_Installer-Linux64-0.27.zip&can=4&q= 以及Processing 2.0和SimpleOpenNi-0.27 我开始处理 – >例子 – > OpenNi – > DepthImage&RUN,并且kinect开始3到10秒,同时将图像连同RGB图像一起给出,并且有一些时候出来,然后帧冻结,当我尝试列出USB设备($ lsusb)没有列出Kinect相机或audio设备,因此Kinect必须从适配器和USB拔下,然后重新插入,运行草图后问题仍然存在。 尝试解决scheme: 1-删除和黑名单gspca内核模块 2-禁用USB自动挂起 但问题仍然存在… 我正在使用Kinect的XBOX 360与(12V – 1.08A)USB交stream电源适配器http://www.walmart.com/ip/INSTEN-USB-AC-Power-Adapter-For-Microsoft-Xbox-360-Kinect多个传感器/ 28882271 我的笔记本电脑是:戴尔Inspiron1525英特尔Core2Duo RAM 2GB 运行Ubuntu 14.04.2 LTS ,, Release:14.04,Codename:trusty 任何人都可以帮助我!

分段error handling

我有一个应用程序,我用它来捕捉任何分段错误或ctrl-c。 使用下面的代码,我能够捕捉到分段错误,但处理程序被一次又一次地调用。 我怎样才能阻止他们。 为了您的信息,我不想退出我的应用程序。 我只需要注意释放所有损坏的缓冲区。 可能吗? void SignalInit(void ) { struct sigaction sigIntHandler; sigIntHandler.sa_handler = mysighandler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0; sigaction(SIGINT, &sigIntHandler, NULL); sigaction(SIGSEGV, &sigIntHandler, NULL); } 和处理程序是这样的。 void mysighandler() { MyfreeBuffers(); /*related to my applciation*/ } 在这里为分段错误信号,处理程序被调用多次,正如显而易见MyfreeBuffers()给我释放已释放内存的错误。 我只想释放一次,但仍然不想退出应用程序。 请帮忙。

File Watcher – 获取在Windows中创build文件的进程名称?

有没有一种很好的方法来获取在Windows中创build文件的进程名称? 我有一个Windows 2000 Server上的目录 C:\ WINNT \ Temp用名为: 70618199 21834082 他们总是121,201 KB的大小。 以编程方式我可以“捕获”在这个位置丢弃文件的程序名称或服务名称? 更多信息: 我对此做了更多的研究。 我重命名文件TIFF,并能够打开它。 该机器通过定制的ASP.NET应用程序作为文档search工具。 机器在E:\驱动器上包含大约50,000个TIFF文档。 此机器也运行SQL Server 2000 w /全文索引打开。 全文索引绝不会触及TIFF – 但不应该因为这是SQL对吗? 但是,FTS确实需要启用索引服务。 奇怪的事情这个TIFF似乎是最大的东西服务的Web服务器。 IIS或索引服务是否使用C:\ WINNT \ Temp进行某种caching? 思考? 解决scheme(也许?)这似乎是Microsoft索引服务。 当我closures它时,这些文件都不会在WINNT \ Temp中创build。 它似乎抓住它find的最大的文件并将其复制到WINNT \ Temp。 这很奇怪 当您处理100MB + TIFF文件时,这可能会导致磁盘空间不足。 很烦人。 猜猜我将closures索引服务的“Web”分支。

是依靠一个Windows手柄的types是一个指针好吗?

Windows的句柄有时很烦人,记得清理后(使用创build的笔和刷子做GDI就是一个很好的例子)。 RAII解决scheme非常棒,但是为每个不同types的手柄制作一个完整的(规则五)RAII类真的很棒吗? 当然不是! 我能看到的最好的是一个完整的genericsRAII类,其他类只是定义了在清理句柄时要做什么以及其他句柄特定的方面。 例如,一个非常简单的模块类可以这样定义(只是一个例子): struct Module { Module() : handle_{nullptr} {} Module(HMODULE hm) : handle_{hm, [](HMODULE h){FreeLibrary(h);}} {} operator HMODULE() const {return handle_.get();} private: Handle<HMODULE> handle_; }; 这一切都很好,没有破坏者或任何东西是必要的。 当然,虽然能够编写Handle类不需要析构函数,但也是很好的。 为什么不使用现有的RAII技术? 一个想法是使用一个智能指针到一个void ,但这是行不通的。 以下是在正常情况下实际声明句柄的方式: #define DECLARE_HANDLE(n) typedef struct n##__{int i;}*n DECLARE_HANDLE(HACCEL); DECLARE_HANDLE(HBITMAP); DECLARE_HANDLE(HBRUSH); … 它实际上区分句柄types,这是好的,但它使使用一个智能指针不可能void 。 如果相反,由于句柄是定义,指针,types可以被提取? 我的问题是,以下是否是一个安全的假设。 它使用桌面的句柄,必须closures。 除了共享指针和唯一指针之间的区别(例如, FreeLibrary有自己的引用计数语义),假定句柄是一个指针,并指向任何指向好的指针,或者我不应该使用智能指针并使Handle实现RAII方面本身? #include <memory> #include <type_traits> […]

boost ::线程导致小事件处理泄漏?

我正在debugging这个数据库项目。 它为更高级别的应用程序封装了对SQLite的访问。 它被devise为asynchronous运行,也就是说,它有像ExecuteRequestAsync()和IsRequestReady()这样的方法。 当ExecuteRequestAsync被调用时,它产生一个boost :: thread来完成这个工作并立即返回该函数。 当高层应用程序决定不再需要运行请求的结果时,它可以调用DumpRequest()来取消它。 由于很难正常取消数据库请求,DumpRequest的实现只是维护一个“清理监视线程”,等待“已完成的请求”并将其删除。 所有的boost :: threads都是通过boost :: shared_ptr来pipe理的,比如: boost::shared_ptr<boost::thread> my_thread = new boost::thread(boost::bind(&DBCon::RunRequest, &this_dbcon)); 而当它不再需要(取消): vector<boost::shared_ptr<boost::thread> > threads_tobe_removed; // some iteration threads_tobe_removed[i].get()->join(); threads_tobe_removed.erase(threads_tobe_removed.begin()+i); 我创build了这个unit testing项目来testing执行和转储请求的机制。 它运行请求并随机取消正在运行的请求,并重复数千遍。 机制certificate是可以的。 一切按预期工作。 但是,通过sysinternal的Process Explorer观察unit testing项目,发现存在句柄泄漏问题。 每过500英里,句柄数就增加1,永远不会返回。 这是正在增加的“事件”types句柄。 文件和线程句柄没有增加(当然,随着线程的产生,句柄的数量也在增加,但是每隔一百次就有一个Sleep(10000)调用等待它们被清理,以便可以观察句柄计数)。 我没有自己pipe理事件处理。 它们是在创build线程时由boost :: thread创build的。 我只保证优雅地closures线程,我不知道事件是用于什么。 我想知道有没有人遇到类似的问题? 什么可能是这个泄漏的原因? Process Explorer中的这个数字是否足够可靠,称之为句柄泄漏? 有什么方法可以追踪和修复吗? 我使用Visual C ++在Windows Vista上使用静态链接boost 1.40。

如何在Windows中监视进程/程序的执行?

我们正在尝试开发一个小型的应用程序,它可以监视在Windows机器上执行的程序/进程。 如果程序/进程不应该运行,它应该被阻止。 它的作用类似于防病毒。 这是基本的想法。 我想知道如何挂钩进入操作系统,以获得有关试图在机器上运行的每一个程序/进程的通知。

如何获得属于某个进程的打开句柄的计数?

您可以使用程序Process Explorer来查看运行应用程序的手柄数量。 有没有用Delphi代码来获取这个数字的方法? 我有兴趣跟踪应用程序本身的号码; 没有findProcess Explorer正在执行的其他应用程序使用的句柄数。 我的意图是让应用程序跟踪/检测可能的资源泄漏。

python:相当于SIGALRM的窗口

我有这个装饰: def timed_out(timeout): def decorate(f): if not hasattr(signal, "SIGALRM"): return f def handler(signum, frame): raise TimedOutExc() @functools.wraps(f) def new_f(*args, **kwargs): old = signal.signal(signal.SIGALRM, handler) signal.alarm(timeout) try: result = f(*args, **kwargs) finally: signal.signal(signal.SIGALRM, old) signal.alarm(0) return result new_f.func_name = f.func_name return new_f return decorate 代码只能在Linux上做任何事情,但是,在Windows上,没有SIGALRM 。 让这个代码在Windows中工作最简单的方法是什么?

在Windows下dynamic加载的库的地址范围

我有一个工作程序,加载LoadLibrary插件。 新的要求:在代码的某一点,我给了一个指针,我需要testing这个指针是指向代码还是插件的静态数据。 bool is_pointer_into_plugin(void *p, HMODULE h); 等价地,我需要检索指针指向的插件(如果有的话)。 我还需要知道指针是指向主程序的代码还是静态数据(最好是区分只读区域和读写区域)。 HMODULE plugin_containing_pointer(void *p); 等同地,我需要能够检索插件映射的范围(地址和大小)。 我也需要这个主要程序的信息。 我如何实现is_pointer_into_plugin ,或者plugin_containing_pointer ,或者其他什么东西? 如有必要,我可以更改对LoadLibrary的调用。 查找应该尽可能快,加载时间代码不需要很快。 在单独的进程中运行插件并通过共享内存进行通信不是一种select。 该程序必须运行在Windows XP和以上(和Linux,但这是另一个问题 )。 我需要的信息或多或less是Sysinternals公用事业listdlls报告的,所以我试图找出它是如何实现的。 我看到了使用NtQueryInformationProcess来检索链接到LDR_DATA_TABLE_ENTRY的PEB结构的LDR_DATA_TABLE_ENTRY 。 看起来很有希望,但是: 我可以看到一个DllBase ,看起来它可能是每个DLL的起始地址(是吗?),但没有大小。 NtQueryInformationProcess的文档将NtQueryInformationProcess标记为不可移植的,但是并不表示我正在尝试做什么。 在我的系统中, PEB中唯一的字段是BeingDebugged和SessionId ,加上一些Reserved N字节数组 – 不是一个好兆头。 我如何枚举插件的地址范围,或testing一个指针是否在一个插件,或确定一个指针指向哪个插件?

在同一进程中加载​​多个dll副本

我有一个由第三方生产的DLL,它具有某种内部数据结构,将其大小限制为X个元素。 所以基本上,它有一个以X为限的队列。 现在从我所知道的DLL是每个进程,但是有可能不止一次加载一个DLL? 也许每个线程? 在C#中? 或者在C ++ / CLI中? 我试图加载一个本地的C ++ DLL。