草庐IT

eval-stdin

全部标签

php - 检测 stdin 是 PHP 中的 tty 设备(终端)还是管道?

我写了一个php脚本。我希望它在以交互方式读取和执行之前使用连接到tty设备(终端)的标准输入调用时显示帮助消息,但是当使用文件或来自管道的流作为标准输入调用时不显示帮助消息。有没有办法从PHP检测到这个? 最佳答案 使用posix_isatty.此函数接受文件描述符(整数)和PHP流。如果它接收到PHP流,它会自动尝试castit以获得文件描述符并使用它。 关于php-检测stdin是PHP中的tty设备(终端)还是管道?,我们在StackOverflow上找到一个类似的问题:

matlab eval 函数的使用

文章目录前言一、eval函数二、代码示例总结前言很多时候在用matlab进行编程的时候,我们需要给多个变量命名和赋值,如果用手一个一个的去敲,多少会感到无聊且枯燥,而且还显得不专业。利用for循环和eval函数即可实现多变量的命名和赋值。一、eval函数在matlab帮助文档中,对eval函数的描述如下:使用语法:eval(expression)[output1,...outputN]=eval(expression)其中expression为要实现的代码。光看matlab的帮助文档可能对eval函数的实际使用的帮助不是很大,实际上,eval函数可以理解为直接在matlab命令行中运行括号里的

c++ - 为什么 stdin 和 stdout 看起来可以互换?

我知道stdin和stdout(至少在UNIX的说法中)是流缓冲区,stdout用于从程序输出到控制台(或者然后由shell等通过管道传输),而stdin是用于程序的标准输入..那么,至少在macOS上,为什么它们可以互换使用(stdout和stdin,反之亦然?例子:如果您运行cat/dev/stdin然后输入一些内容,它会回显。以cat/dev/stdout运行命令会做同样的事情。同样,echo"HeyThere">/dev/stdout和echo"HeyThere">/dev/stdin都输出'HeyThere'到终端。它也适用于C++:例子:#include#include#i

C++ 调用 perl 代码 - eval_sv 不将参数传递给脚本

我有下面的示例程序,它将参数推送到Perl堆栈,然后调用“eval_sv”。执行了示例perl语句,但我无法检索作为Perl参数从C++传递的变量。请让我知道我在下面的程序中缺少什么程序的输出HelloWorldTest100Testingcomplete这一行不打印$a和$b的值stringthree="print'Test\n';my$z=100;print$a;print$b;print$z;";这是我的代码:#include#include#includeusingnamespacestd;stringperlScript;staticPerlInterpreter*my_pe

c++ - 如何判断STDIN是否为空?

我正在为我的操作系统类(class)编写一个模拟器。我遇到的问题是我们需要从STDIN获取所有的.job文件(它们就像被馈送到模拟器的应用程序)并读入。调用:./RMMIX我只是用它吸食while(getline(std::cin,line))逐行。问题是,如果我不向STDIN添加任何内容,那么cin将等待用户输入——这不是我想要的。我需要程序识别STDIN上缺少文本并终止,而不是等待用户输入。我确定我可以这样查询长度:size_tbeg=std::cin.tellg();std::cin.seekg(0,std::ios_base::end);size_tend=std::cin.t

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的源代码。