Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse -选择()中的C++ MaFrimeProject在STDIN中返回异常快 我的Eclipse项目是一个带有MaFaFig项目的C++。在makefile的末尾,有一个对可执行文件的调用,就像从终端调用一样/迈克斯_C++_Eclipse_Stdin - Fatal编程技术网

Eclipse -选择()中的C++ MaFrimeProject在STDIN中返回异常快 我的Eclipse项目是一个带有MaFaFig项目的C++。在makefile的末尾,有一个对可执行文件的调用,就像从终端调用一样/迈克斯

Eclipse -选择()中的C++ MaFrimeProject在STDIN中返回异常快 我的Eclipse项目是一个带有MaFaFig项目的C++。在makefile的末尾,有一个对可执行文件的调用,就像从终端调用一样/迈克斯,c++,eclipse,stdin,C++,Eclipse,Stdin,该程序预计在运行时接受来自终端的命令。这是一个使用MPI的物理模拟,可以在模拟运行时输入stop或stats或stop命令 输入不是用select from library sys/types编写的我的原始代码,例如,用来查看stdin中是否有可读的内容。select的超时选项确保MPI有时间启动。在尝试读取输入一段时间后,它将检查MPI工作负载是否正在进行,如果没有,它将引发超时错误 当我从终端调用makefile时,一切工作都很顺利。当尝试从EclipseShift+F9等运行时,它被破坏

该程序预计在运行时接受来自终端的命令。这是一个使用MPI的物理模拟,可以在模拟运行时输入stop或stats或stop命令

输入不是用select from library sys/types编写的我的原始代码,例如,用来查看stdin中是否有可读的内容。select的超时选项确保MPI有时间启动。在尝试读取输入一段时间后,它将检查MPI工作负载是否正在进行,如果没有,它将引发超时错误

当我从终端调用makefile时,一切工作都很顺利。当尝试从EclipseShift+F9等运行时,它被破坏

问题似乎在于stdin始终是可读的,因此在它有可能启动模拟之前检查MPI-select在之后返回当select说stdin是可读的时,您必须确保在再次调用select之前更改其状态,否则它将立即返回。您的代码不会更改其状态,而是再次调用select,使其永远循环

如何修复它取决于stdin关闭是否是程序的致命条件。如果您的程序必须有一个工作的stdin才能继续,那么如果它在读取stdin时得到一个EOF,它应该终止,而不仅仅是继续盲目地选择。如果您的程序即使没有工作的stdin也能继续有效地运行,那么如果关闭或出现错误,它应该将其从选择集中删除。或停止调用select,具体取决于逻辑


但是,您不能忽略这个案例,继续运行,就好像什么都没发生一样。

当stdin可读时,代码会做什么,使其不再可读?如果不执行任何操作,它将永远保持可读性。readfiledescriptor、buffer、buffersize在terminal和eclipse中都返回0 eof。也许我真的不明白Selector做什么…:苏帕特:我的错。正确的应该是:我从终端运行意味着选择和阅读作品,因为他们应该。除非我在终端中输入一行,否则不会读取任何内容。ii从eclipse运行意味着stdinis可读,read在1 msThnk之后返回0 eof供您澄清。我以为stdin会在所有的行都被读取后改变状态。当stdin连接到我的好的旧bash终端时,它将随着每一行的读取而改变状态,并且在我再次按enter键提交新的可读行之前,它将不可读。eclipse控制台似乎不是这样的,这就是我提出这个问题的原因。eclipse的默认stdin是什么?嗨!尽管如此,select仍会返回可读性。。。。这里有些可疑之处,但最终我解决了它,而不是解决了它。谢谢你的帮助@当然,LudvigH select返回可读的,可读的。停止调用select以获取您已有的信息!如果某个东西不能变得可读,你就不能等待它变得可读。