草庐IT

STDIN_FILENO

全部标签

windows - 我用什么来读取子进程的 STDIN/写入 STDOUT?

我有一个从STDIN读取并输出到STDOUT的可执行文件。我需要一个Perl脚本,它将这个可执行文件作为子进程派生并写入该子进程的STDIN,并从STDOUT读取。这是Windows所必需的。有什么想法或建议吗? 最佳答案 perlfaq8HowcanIopenapipebothtoandfromacommand? 关于windows-我用什么来读取子进程的STDIN/写入STDOUT?,我们在StackOverflow上找到一个类似的问题: https://

c++ - 是否可以从 stdin 输入指向指针的地址?

不久前,我有了一些简单的进程间通信的想法:一个进程将地址输出到一个指针,我将其复制到另一个进程的输入,然后更改原始变量。我是这样实现的:#include#includeusingnamespacestd;intmain(){boolp;cin>>p;if(p){intn;n=0;cout>n;*point+=n;}return0;}我使用scanf是因为cin提示并且无法编译。我尝试用两个进程运行它,但在我启动第二个实例并输入指针的地址(如第一个实例输出的那样)后,它卡住了。因为我只能访问Windows,所以我不知道它是否有SIGSEGV,或者它是否做了一些完全不同的事情。是我试图更改

python - 为什么我不能将 sys.stdin 中的所有数据写入 Windows 中的文件?

我正在尝试在WindowsXP上使用Python2.7从sys.stdin读取二进制数据。二进制数据是由foobar2000解码的WAV文件。通常,此数据被发送到命令行编码器,例如stdin上的lame.exe,在那里它被处理并写入输出文件,其名称在命令行参数中提供。我试图拦截输出的WAV数据并将其发送到另一个文件。但是,在管道明显崩溃之前,我只能从stdin获得几KB,因此我只剩下一个非常短(大约75KB)的WAV文件,而不是我期望的几十兆字节。这可能是什么原因造成的?我一直小心地将sys.stdin和输出文件作为二进制文件打开。from__future__importprint_f

c - 从 stdin 非阻塞读取

我希望ReadConsoleW()在读取特定数量的字节后返回。但它不会返回。如何让ReadConsoleW()在读取完指定的字节数后立即返回?我试过的代码在这里:#include#includeintmain(){//somethingisbeingwrittentostdin.Sleep(2000);intb;intr;//read3widecharacterReadConsoleW(GetStdHandle(STD_INPUT_HANDLE),&b,3*sizeof(TCHAR),(LPDWORD)&r,NULL);//problem:noreturnsuntilenterpres

c++ - 如何读取 stdin 以 qt 结尾?

我有一个可以调用的qt-app:catbla.bin|myapp在Win、Mac和Linux上将整个输入(stdin)读入QByteArray的最简单方法是什么?我累了好几件事,但似乎都不起作用(在Windows上):intmain(intargc,char*argv[]){QCoreApplicationapp(argc,argv);QByteArraycontent;//---Test1:hangsforever,reads0while(!std::cin.eof()){chararr[1024];ints=std::cin.readsome(arr,sizeof(arr));co

c - Windows 控制台下的 Stdin 和 EOF 行为

我正在学习C中输入的工作原理。我最大的困难是理解终端中的EOF行为首先,我正在使用Windows和GCC编译器“以防万一”其次,我不是要重定向来自文件的输入...我的问题是关于来自Windows控制台的输入我的问题:我读到EOF关闭了输入流,在EOF之后你不能从标准输入读取...这对我来说不是这种情况!即使在我明确输入Enter-Ctrl-Z-Enter之后,如果我执行另一个getchar()调用,它也会从标准输入中读取...例如:intc=0;charstr[100]={0};printf("Typeinastringwithspacessosomecharswouldremaini

windows - 在 Windows 上的 STDIN 上使用 IO::Select

当我在Linux系统上运行下面的代码时,正如预期的那样,它大约每两秒输出一次Nothingisready,并且还会将输入的任何内容输出到控制台。但在Windows上,can_read立即返回零项。useIO::Select;my$sel=IO::Select->new();$sel->add(\*STDIN);while(1){my@ready=$sel->can_read(2);if(scalar@ready==0){print"Nothingisready\n";}foreachmy$fh(@ready){if($fheq\*STDIN){my$in=;print"got$infr

python - 从文件重定向 stdin 时如何读取包含 ctrl-Z 的文件?

我的python脚本中有这样一行:data=sys.stdin.read()然后我在Windows上运行带有文件重定向的脚本:>>pythontest.py如果binary_file包含\x1a(ctrl-Z)在Windows中是EOF,数据将只有\x1a之前的字符串。我知道这可以通过open("...","rb")修复常规文件。我将如何为sys.stdin处理这个问题? 最佳答案 我的下一步是尝试fileinputmodule但我的直觉是cmd.exe(或处理管道的代码)真正处理流,查找\0x1a字节并向您发送EOF。如果是这样,

c++ - 如何在 Windows 中访问继承的匿名管道 HANDLE,而不是 stdout、stderr 和 stdin?

我正在尝试通过Windows中的匿名管道从子进程接收数据。我知道如何使用标准I/O流来执行此操作,但这些被用于其他目的。我也知道如何在Linux或OSX中使用fork()、pipe()和execv()执行此操作。在Windows中,您可以使用CreatePipe()创建管道,并使用SetHandleInformation()使一端不可继承。然后,对于stdout和stderr,您可以将STARTUPINFO和hStdOutput或hStdError设置为CreateProcess()以传递另一端给child。在调用CreateProcess()之后,父级最接近它的是子级管道末端的句柄。

python - 子进程,从 STDOUT 读取时重复写入 STDIN (Windows)

我想从python调用外部进程。我正在调用的进程读取输入字符串并给出标记化结果,然后等待另一个输入(如果有帮助,二进制是MeCab标记器)。我需要通过调用此过程来标记数千行字符串。问题是Popen.communicate()工作但在给出STDOUT结果之前等待进程结束。我不想继续关闭和打开新的子流程数千次。(而且我不想发送整个文本,将来很容易超过数万行。)fromsubprocessimportPIPE,PopenwithPopen("mecab-Owakati".split(),stdin=PIPE,stdout=PIPE,stderr=PIPE,close_fds=False,un