Articles of pipe理员

创buildCMake选项组

我正在使用CMake来pipe理Linux上的项目集合,而不是一个项目,但原理是一样的。 每个项目都有自己的选项集合,例如DEVEL开关和要包含的自定义代码。 这些都是以标准的CMake方式添加的: OPTION(NAME "Helpstring" VALUE) 我正在寻找一种方法来分组这些选项,根据他们属于哪个项目,因为目前他们是按字母顺序放置,可能会相当混乱。 这也可以节省我为每个选项提供独特的名称,例如一个DEVEL选项可以适用于所有的项目,但我可能只想在一些项目上启用它。 我不想写例如PROJECTNAME_DEVEL选项。 理想情况下,我希望系统根据项目划分选项,例如 PROJECT1NAME: DEVEL: ON PROJECT2NAME: DEVEL: OFF ANOTHER_OPTION: ON 我能不能做到这一点? 我主要是瞄准这个在cmake的ncurses接口,我看到Qt接口可以分组条目,所以这可能在ncurses接口? 干杯

在Linux上重复Visual Studio的内存违规检测

我使用QT Creator在Linux上开发了一个命令行(非GUI)C程序,该程序内部使用gdb作为其debugging器。 当我使用Visual Studio在Windows上debugging程序时,它报告说它正在写入分配内存的范围之外(虽然它没有在发生的确切时间报告违规情况,所以仍然很难追查到)。 我最终设法在代码中find一个地方,malloc调用分配的内存太less,解决了这个问题。 然而,这让我烦恼,这个问题从来没有在Linux端检测到。 有什么开关或者什么东西可以启用这个检测function在Linux上?

使用cut,colrm,awk和sed的奇怪问题:无法从pipe道stream中剪切字符

我已经创build了一个脚本来枚举目录下的所有文件。 我想通过使用pv来添加一些进度反馈,因为我通常从根目录使用它。 问题是find它的时间输出总是包含小数秒(%TT),但我不想logging这么多的细节。 如果我写一个脚本来完成所有的事情,我会得到正确的结果。 但是如果我使用中间文件在“秒”中进行估计,结果会发生变化,我不明白为什么。 这个版本给出了正确的结果: #!/bin/bash find -printf "%11s %TY-%Tm-%Td %TT %p\n" 2> /dev/null | # – Remove the fractional seconds from the time # before: 4096 2011-01-19 22:43:51.0000000000 . # after : 4096 2011-01-19 22:43:51 . colrm 32 42 | pv -ltrbN "Enumerating files…" | # – Sort every thing by filename sort […]

在linux编程中通过pipe道在进程之间发送链表结构的最好方法是什么?

我尝试发送来自同一父级的subprocess之间的链接列表。 Child1需要find列表中的第一个素数,然后将其删除,然后将其倍数发送给Child2。 Child2做同样的事情,它发送到Child3和ChildN做同样的,并发送到Child1。 然而,我试图发送地址数据而不是所有的数字,但这是一种正确的方式,因为我可能会强制我的subprocess进入另一个地址空间。 那么你认为最好的方式是什么或者其他方式而不是发送地址?

如何使用C获取特定的内存地址

对于我的学士论文,我希望可视化内存的数据剩余以及在重新启动系统后它如何持续。 我有一个简单的想法,将一张图片映射到内存,closures我的电脑,等待x秒钟,启动电脑,看看图片是否仍然存在。 int mmap_lena(void){FILE * fd = NULL; size_t lena_size; void * addr = NULL; fd = fopen(“lena.png”,“r”); fseek(fd,0,SEEK_END); lena_size = ftell(fd); addr = mmap((void *)0x12345678,(size_t)lena_size,(int)PROT_READ,(int)MAP_SHARED,(int)fileno(fd),(off_t)0); fprintf(stdout,“Addr =%p \ n”,addr); munmap((void *)addr,(size_t)lena_size); FCLOSE(FD); FCLOSE(fd_log); 返回EXIT_SUCCESS; } 为了清楚起见,我省略了检查返回值。 所以在mmap后,我试图以某种方式得到的地址,但我通常结束了分段错误,以我的理解内存是受我的操作系统保护。 int fetch_lena(void) { FILE * fd = NULL; FILE * fd_out = NULL; size_t lenna_size; FILE * […]

在具有自动应答的batch file中使用CACLS.EXE

我想在自动应答的batch file中使用CACLS.EXE,但没有成功。 以下Microsoft文章没有解决我的问题( http://support.microsoft.com/kb/135268 )。 batch file是: cacls ALF.exe /d everyone 如果我使用它,它会问Y或N个问题。 我已经尝试了两种变体来自动回答问题: echo y| cacls ALF.exe /d everyone (Doesn't work) cacls ALF.exe /d everyone < yes.txt (Doesn't work) 我使用Windows Ultimate x64。 我该如何解决这个问题?

在Windows上pipe理图像

在Windows shell中运行此命令: djpeg -pnm -gray text.jpg | gocr – 按预期工作 – 图像由djpeg可执行文件解码并传递给解码内容的gocr 。 我想运行类似于Python下的这个任务 – pipePIL图像到gocr没有写临时文件。 例如,我可以指示PIL将图像以PPM格式( gocr可执行文件接受)写入标准input: im.save(sys.stdin, 'PPM') 但是任何我用pipe道和subprocess模块尝试的东西,都不给我欢乐。 有人可以build议如何通过Python来运行这个任务 – 从PILpipe道图像到可执行文件,并从标准输出获得文本输出?

通过Rails通过HTTP远程WSH

我有一个Windows游戏服务器(Mount&Blade:Warband),我试图通过Rails应用程序进行远程控制。 我发现了一种使用Windows Script Hosting向游戏服务器发送文本的方法,如下所示: Set ArgObj = WScript.Arguments Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.AppActivate "mb_warband_dedicated" For lcv = 0 to ArgObj.Count – 1 WshShell.SendKeys ArgObj(lcv) WshShell.SendKeys "{Enter}" Next WshShell.SendKeys "start" WshShell.SendKeys "{Enter}" 虽然这感觉很脆弱,但是在我的本地机器上尝试时,它确实有效。 它成功地将焦点转移到游戏服务器,将其参数作为文本发送到游戏服务器,并开始游戏。 我的思路是让我的Rails应用程序在游戏命令POST(使用适当的Rails身份validation和安全授权)时调用WSH可执行文件。 这个工程,如果我远程桌面到运行Rails和游戏服务器的远程机器,但一旦我断开我的远程桌面会话,它不再工作。 Rails服务器收到请求,调用脚本,但是我猜“AppActivate”命令找不到窗口。 如果是Linux机器,我想我可以使用命名pipe道。 这里有什么想法? 电源shell? 也许TCL? 我可以杀死游戏服务器进程,编辑configuration,然后重新启动游戏服务器,但是每个人都会断开连接。

将HANDLE转换为文件描述符

我有一个这样的句柄: HANDLE hPipe = CreateNamedPipe(…) 有可能将hPipe转换为文件描述符 (int)? 我需要这个,因为我已经用C ++实现了一个使用OpenSSL来处理TLS的代码。 这是像TCP套接字的魅力,但我真的需要用它在Namedpipe上。 OpenSSL的函数SSL_set_fd(SSL * ssl,int fd)只接受一个intforms的 FileDescriptor ,而不是一个HANDLE 。 注:我也尝试使用下面的function,但不起作用(返回3): int fd = _open_osfhandle(reinterpret_cast<intptr_t>(hPipe), 0);

计算机睡着时电源状态是否改变,可以通知我吗?

我正在写一个Windows服务应用程序,我很好奇,当系统处于睡眠状态时,当电源从AC切换到DC(反之亦然)时,是否有办法接收通知?