Articles of pipe理员

如何根据操作系统家族有不同的依赖关系

我正在编写一个跨平台的库,它具有特定于平台的依赖关系,一个用于unix平台,另一个用于windows。 这些箱子只能在特定的平台上编译,所以我不能把它们全部添加到通常的依赖项下。 在实际的防锈代码中,我使用cfg属性,如#[cfg(unix)]来编译某些平台的某些代码,我想在Cargo.toml或构build脚本中为依赖项做类似的事情。 目前,我正在使用这样的目标三元组: [target.i686-unknown-linux-gnu.dependencies.crate1] git = repo1 [target.x86-unknown-linux-gnu.dependencies.crate1] git = repo1 [target.x86_64-unknown-linux-gnu.dependencies.crate1] git = repo1 [target.i686-pc-windows-gnu.dependencies] crate2 = "*" [target.x86-pc-windows-gnu.dependencies] crate2 = "*" [target.x86_64-pc-windows-gnu.dependencies] crate2 = "*" 但是,这个清单还不够详尽。 我不关心架构或ABI,只有OS系列,因此,名单会变得很长,我是为每一个unix-like目标三倍匹配。 有没有什么方法可以使用特定的依赖关系,仅由操作系统的操作系统平台运行? 就像是: [target.family.unix.dependencies] abc-sys = "*" def = "*" [target.family.windows.dependencies] abc-win = "*"

使c ++程序以交互方式将input输出传递给windows命令提示符

我想做一个简单的程序,并行地启动一个cmd.exe,并将用户的input作为一个命令,然后传递给cmd.exe,执行后我的程序应该从cmd.exe的输出,并显示它用户。 基本上是一个命令提示符的界面。 我不想使用像system()这样的方法,因为他们每次都启动一个cmd的新实例,而我不能像cd一样运行命令。 我试着用下面的代码来生成一个cmd并显示初始行(copyright ….),但是传递命令只是简单地返回相同的行。 #include <iostream> #include <windows.h> #include <process.h> using namespace std; DWORD WINAPI exec(LPVOID inputP){ char* input=(char*) inputP; HANDLE stdinRd, stdinWr, stdoutRd, stdoutWr; SECURITY_ATTRIBUTES sa = {sizeof(SECURITY_ATTRIBUTES), NULL, true}; STARTUPINFO si; PROCESS_INFORMATION pi; DWORD stuff; char buff[1000]; //Create the main transfer pipe if(!CreatePipe(&stdinRd, &stdinWr, &sa, 0) || !CreatePipe(&stdoutRd,&stdoutWr, &sa, 0)) { cout<<"Pipe […]

在Unix(或Windows)中,如何使用(最好是未命名的)pipe道将一个进程的stdout发送到多个进程?

我想将进程proc1的stdoutredirect到两个进程proc2和proc3: proc2 -> stdout / proc1 \ proc3 -> stdout 我试过了 proc1 | (proc2 & proc3) 但它似乎并没有工作,即 echo 123 | (tr 1 a & tr 1 b) 写 b23 stdout而不是 a23 b23

与Windows命名pipe道(.Net)的asynchronous双向通信

我有一个Windows服务和一个graphics用户界面需要相互沟通。 可以随时发送消息。 我正在看使用NamedPipes,但似乎你不能同时读取和写入stream(或者至less我找不到任何涵盖这种情况的例子)。 是否有可能通过单个NamedPipe进行这种双向通信? 或者我需要打开两个pipe道(一个来自GUI->服务,另一个来自服务 – > GUI)?

使用SetProcessWorkingSetSize的优点和缺点

我的应用程序中有内存pipe理问题。 应用程序内存在运行时迅速增长。 我在断开模式下使用数据集。 为了解决这个问题,我经常刷新DS,并使用SetProcessWorkingSetSize来pipe理内存使用情况。 在我的开发电脑上工作正常。 使用SetProcessWorkingSetSize的优点和缺点是什么?

我可以修改Windows 7预览窗格,以便HTML文件只显示预览中的文本,而不是呈现html?

当我点击浏览器中的html文件时,预览窗格当前会尝试呈现预览的html。 我想要的行为只是显示文本没有解释标签。 有没有办法通过搞乱registry或改变设置的地方做到这一点?

链接到一个大的地址感知DLL

假设我有一个用LARGEADDRESSAWARE链接器标志集合构build的DLL。 现在我有一个应用程序dynamic链接到这个DLL。 这是否使我的应用程序LARGEADDRESSAWARE? 如果不是,那么有没有这个标志设置为任何DLL的意义?

命名pipe道读取超时

我试图设置超时到我命名pipe道的读取操作。 为了从命名pipe道读取,我正在使用ReadFile函数。 我读过SetCommTimeouts函数可以为此函数设置超时,但是当我尝试使用它时,出现系统错误1:“函数不正确”。 这是我的代码(这是客户端): m_pipe = CreateFileA(pipeName, // pipe name GENERIC_READ | // read and write access GENERIC_WRITE, 0, // no sharing NULL, // default security attributes OPEN_EXISTING, // opens existing pipe 0, // default attributes NULL); // no template file if (m_pipe != INVALID_HANDLE_VALUE) { DWORD mode = PIPE_READMODE_MESSAGE | PIPE_WAIT; ok = SetNamedPipeHandleState(m_pipe, […]

如何在运行时获得内存使用情况在C + +?

我需要得到我的程序运行时的MEM使用VIRT和RES,并显示它们。 我到目前为止的尝试: getrusage( http://linux.die.net/man/2/getrusage ) int who = RUSAGE_SELF; struct rusage usage; int ret; ret=getrusage(who,&usage); cout<<usage.ru_maxrss; 但我总是得到0。

如何从vbs以pipe理员身份运行vbs?

任何人都可以帮助我从自己运行的VBS但具有pipe理员权限? 我需要通过vbs重命名Win8的计算机,但只有通过pipe理员命令行(cmd – >以pipe理员身份运行 – > runScript.vbs)运行我的脚本才有可能。 如果我启动脚本与经典的CMD电脑不重命名。 我的想法是我启动用户权限的脚本,没有参数,如果没有参数,脚本运行自己的pipe理权限和参数作为标识符“我是pipe理员”。 有谁知道我怎么能做到这一点? 谢谢。 McAndy 编辑: 我试过这个: If WScript.Arguments.Count = 0 Then Set objShell = CreateObject("Shell.Application") objShell.ShellExecute "wscript.exe", "c:\Users\admin\Documents\selfConfigure.vbs -1", "", runas", 1 End If