草庐IT

STDIN_FILENO

全部标签

c++ - stdin/stdout/stderr 上的跨平台 (linux/Win32) 非阻塞 C++ IO

我正在尝试通过具有以下特征的标准输入/标准输出找到非阻塞IO的最佳解决方案:只要有足够的数据,以n大小的block读取。如果没有足够的数据,读入部分块。如果没有可用数据,则阻塞直到有一些(即使它可能小于n)。目标是允许高效传输大型数据集,同时立即处理“控制”代码(而不是让它们停留在某个部分填充的缓冲区中的某个地方)。我知道我可以通过使用线程和istream::get()循环,或者通过编写一堆特定于平台的代码(因为你不能在Windows中的文件句柄上选择())来实现这一点......((还有istream::readsome()看起来很有希望,但我在谷歌上找到的唯一结果是人们说它实际上效

c++ - 如何将 STDIN 传递给子进程?

voidWriteToPipe(void)//Readfromafileandwriteitscontentstothepipeforthechild'sSTDIN.//Stopwhenthereisnomoredata.{DWORDdwRead,dwWritten;CHARchBuf[BUFSIZE];BOOLbSuccess=FALSE;char*name=malloc(100);fgets(name,100,stdin);bSuccess=WriteFile(g_hChildStd_IN_Wr,name,10,&dwWritten,NULL);if(!bSuccess)Error

c++ - 使用 stdin stdout 和 stderr 启动 exe/进程?

在C++中,我如何使用stdinstdout和stderr启动exe/进程?我知道如何在.NET中执行此操作,我记得过去使用过popen,但popen似乎允许stdin或stdout,但不能同时允许stdin或stdout,也不能同时允许3个。我需要它用于windows,但欢迎使用linux解决方案,因为我将来会在同一个项目中需要它。 最佳答案 可移植解决方案是boost.process(注意:这已被提议作为Boost库,并在相同的许可条款下发布,但未被正式接受。另请参见WhereisBoost.Process?)

c++:子进程输出到stdin

假设我想从我的程序中调用一个子进程,并且我想将该子进程的输出读取到我的程序中。这是一个简单的方法://somefile.cppsystem("sub_processarg1arg2-ofile.out");//callthesubprocessandhaveitwritetofileFILE*f=std::fopen("file.out","r");//....andsoon我们都知道I/O操作的计算速度很慢。为了加快速度,我想跳过写入文件然后从文件读取的步骤,而是将此子进程的输出直接重定向到stdin(或其他流)我该怎么做?如何跳过I/O操作?注意:许多程序在运行时将一些诊断信息吐出

c++ - 通过 stdin 和 ostream 向程序发送数据。 (C++)

我想将数据从我的C++程序发送到外部管道,如下所示:FILE*file=popen("my_prog-opt|other_prog","w");std::ostreamfileStream=some_function(file);fileStream我知道没有简单的、跨平台的方法来完成第二行,但是有没有什么方法可以使用popen以外的东西来完成同样的事情?我不需要使用popen,但我确实需要使用ostream。它至少需要使用clang和gcc进行编译,但最好能与任何编译器一起使用。我还可以更改处理管道的方式,但我没有my_prog或other_prog的源代码。

python 中的 sys.stdin ,sys.stdout 和sys.stderr

文档解释:Fileobjects usedbytheinterpreterforstandardinput,outputanderrors:stdin isusedforallinteractiveinput(includingcallsto input());stdout isusedfortheoutputof print() and expression statementsandforthepromptsof input();Theinterpreter’sownpromptsanditserrormessagesgoto stderr.1.sys.stdinsys.stdin是一个标

c++ - 通过 Windows 管道写入进程 STDIN

我正在尝试创建一个函数,该函数将生成一个程序实例,然后将一些数据通过管道传输到它的STDIN,然后使用C++读取进程的输出。我查看了位于here的MSDN示例这让我很困惑,当我尝试使用这个例子时,我得到了一些讨厌的错误代码并且它不起作用。HANDLEhWriteOUT,hReadOUT,hWriteIN,hReadIN;SECURITY_ATTRIBUTESsaPipe={0};PROCESS_INFORMATIONprocInfo={0};STARTUPINFOprocSi;DWORDdwWritten,dwRead;charbuf[512];saPipe.nLength=sizeo

arrays - <STDIN> 仅在第一次使用 Ctrl-Z 时在 Perl 脚本中工作

作为Perl初学者,我正在尝试从RandalL.Schwartz的“学习Perl”中做一个简单的练习。练习包括从用户输入()中获取元素列表,对其进行排序,并在排序后将其显示在屏幕上。列表可以以两种不同的方式输出,在同一行使用逗号,或者在不同的行。我的问题是当我从用户输入中获取列表时(Enter在每个元素之间和Ctrl-Z当用户是完成),我不能使用再次。因此,我不可能获得所需输出方法的用户输入。请宽容,我乐于接受所有建议,包括关于如何使用StackOverflow的建议,因为这是我在这里发表的第一篇文章。编辑:我在Windows上,在Eclipse中使用EPIC模块。我已经尝试过Crtl

windows - Windows 中未声明的 STDIN_FILENO

我有一些使用select函数的代码可以在Linux中正常编译和运行。但是我正在尝试将它移植到Windows并收到此错误我不知道如何处理。它说STDIN_FILENO:undeclaredidentifier我无法为此提出或找到任何解决方案。有没有办法让STDIN_FILENO在Windows中工作? 最佳答案 MSDNsuggests使用_fileno(stdin),其中_fileno在中声明.但是请注意:Ifstdoutorstderrisnotassociatedwithanoutputstream(forexample,ina

windows - 在 Win32 上从 stdin 读取二进制数据,并将其写入文件

什么是Unix管道的Windows(Win32)命令行等效项:myprogmyarg|cat>out.dat请注意,我想要一个管道,以测试myprog是否可以成功写入管道,所以请不要将其简化为:myprogmyarg>out.dat我猜是这样的myprogmyarg|copy/bconout.dat会工作,但我没有要检查的Windows机器。请注意,生成的数据是二进制的,它包含所有可能的字节值0..255,并且所有这些都必须原封不动地保留下来,不进行任何转换。 最佳答案 由于Windows没有附带这样的程序,这里有一个用C编写的快速