这是的后续问题。
以这个简单的例子为例:
public class Main
{
public static void main(String[] args) throws Exception
{
Runtime.getRuntime().exec("./child");
// This is just so that the JVM does not exit
Thread.sleep(1000 * 1000);
}
}
这就是孩子的过程:
#include <stdlib.h>
#incl
因此,我有一个从父进程到子进程的文件流--而且大多数情况下都很好。但是,当多次快速读取时,使用fget()将返回NULL,错误设置为“资源暂时不可用”。问题是间歇性的--运行执行读取的脚本时,有时会有fget返回空,有时将不会。
有人能帮我阻止这个错误的发生吗?谢谢!
编辑:这是一些代码..。我不知道还有什么代码会有用吗?有很多
// this is the bit that gets a line from the child
if( fgets( line, MAX_LINE_LENGTH, fpin ) == NULL ) {
if( ferror(fpin) ) {
我正在寻找Python代码,这将运行一些Linux代码的孩子的终端和退出后,父母终端-所有的孩子的终端将被关闭。
下面是一个小示例,它应该如何工作:
import os
HOW_MANY_CHILDS_TERMINAL = 5
for x in range(HOW_MANY_CHILDS_TERMINAL):
print("X opened.")
os.system("do some linux stuff")
问题是,这会覆盖我当前的终端窗口。
我需要在单独的窗口中打开每个Linux命令。
-- thread A
t <- forkIO $ do
_ <- accept listener -- blocks
-- thread B
killThread t
工作在Linux上(可能也适用于OS和FreeBSD),但不适用于Windows (尝试使用-threaded和+RTS、-N4、-RTS等)。
在这种情况下,终止线程A的正确方法是什么?
是否有一种方法可以在特殊模式下将线程A分叉,从而允许在accept上阻塞的点终止
如果A用forkOS而不是forkIO分叉,会有帮助吗?
只有当发出警告时,我才注意到这种不正常的Windows行为
我正在使用建立一个流,进入一个运行修改过的linux的设备。在建立流之后,我将阻塞设置为true并开始读取输出。当我看到单词"Last“时,我知道系统已经准备好接受命令,所以我发送了一个命令。然后,我读取该命令生成的输出。
这一切都工作得很好,除了我必须手动关闭流。我很确定我没有得到EOF或换行符,这可能就是为什么,然而,这对我来说都是新的,所以我可能是错的。
希望在输出完成后退出。
下面是我在发送第一个命令之前要查找的内容:
Last login: Tue May 7 06:41:55 PDT 2013 from 10.150.102.115
回显输出的循环。我必须检查单词"