问题标签 [fork]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

Filter by
Sorted by
Tagged with
0 投票
7 回答
31572 浏览

在 Windows 中复制 fork() 的最佳方法是什么?

如何实现一些逻辑,使我能够fork()使用 Python 在 Windows 上通过系统调用重现我在 Linux 上的功能?

我特别尝试在 SAPI Com 组件上执行一个方法,同时在主线程中继续执行其他逻辑而不阻塞或等待。

0 投票
5 回答
5353 浏览

如何从 Windows 上的 Perl CGI 脚本派生后台进程?

在 Windows 上运行时,我在从 Perl CGI 脚本分叉进程时遇到了一些麻烦。主要问题似乎是在 Windows 上运行时模拟了“fork”,实际上似乎并没有创建新进程(只是当前进程中的另一个线程)。这意味着等待进程完成的 Web 服务器(如 IIS)会继续等待,直到“后台”进程完成。

有没有办法从 Windows 下的 CGI 脚本中分叉出后台进程?更好的是,我可以调用一个函数以跨平台方式执行此操作吗?

(而且只是为了让生活更加困难,我真的想要一种同时将分叉进程输出重定向到文件的好方法)。

0 投票
4 回答
686 浏览

fork() 作为参数

通常当我需要在 C 中分叉时,我会这样做:

我突然想到我可以放弃额外的变量并使用:

除了不正确的错误处理之外,(为什么)这工作/不工作?

0 投票
4 回答
395 浏览

有没有办法在 Perl 中托管进程(即实际工作的线程替换)?

我在 perl 中有一个多线程应用程序,我必须依赖几个非线程安全模块,所以我一直使用fork()带有信号的 ed 进程kill()作为消息传递接口。

问题是信号处理程序有点不稳定(至少可以这么说),并且通常最终会导致进程在不适当的状态下被杀死。

有一个更好的方法吗?

0 投票
2 回答
1954 浏览

Perl 单元测试中的分叉子进程停止证明;测试::线束退出

我一直在尝试使用 Perl 实用程序/模块“证明”作为某些单元测试的测试工具。单元测试比“单元”更“系统”,因为我需要分叉一些后台进程作为测试的一部分,使用以下...

但是由于某种原因,当我让我的 .t 文件启动一些额外的进程时,它会导致测试工具在所有测试完成后挂在第一个 .t 文件的末尾,而不是继续到下一个文件或退出如果只有一个。

起初我想知道这是否可能是因为我正在杀死我的子进程并让它们失效。所以我加了..

到代码。但这无济于事。事实上,在封闭式检查中,结果证明我的 perl 测试文件已经退出,现在是一个已失效的进程,它是证明包装脚本没有收获它的孩子。事实上,当我在测试脚本末尾添加 die() 调用时,我得到了......

所以我的脚本退出了,但由于某种原因,线束没有解开。

我确实确认,当我在测试失败时禁用它们时,肯定是我的子流程让它感到不安,而线束正确退出。

我在启动流程的方式上是否做错了什么,可能会以某种方式扰乱安全带?

0 投票
2 回答
836 浏览

Ruby %x 在 64 位 Linux 上分叉,但不是在 32 上,而且只有特定的语法

这是一些Ruby代码:

在 32 位 Ubuntu Dapper 上,我得到以下输出:

这对我来说很有意义。但是在 64 位 Ubuntu Hardy 上,我得到了这个:

这里显示的是 Ruby 在执行前分叉只是其中一种情况。当我将代码放在一个文件中并在 strace -fF 下运行它时,它似乎在 64 位 Hardy 上调用clone()(like fork()) before execve(),而在 32 位 Dapper 上它没有这样的事情。

我的 Ruby 版本是:

我应该尝试更多地混合和匹配解释器、操作系统和字长,但现在这并不容易,因为我不管理这些机器。也许你们中的某个人可以告诉我这些命令在 64 位系统上的区别是什么,更不用说为什么它们在 32 位系统上的工作方式相同了。

0 投票
5 回答
12572 浏览

如何在 Python 中的父进程和分叉子进程之间共享数据?

我很确定有人会使用 os.plock(op) 函数来做到这一点,但我不知道怎么做。另外,如果有更好的方法,我将不胜感激。代码片段非常受欢迎。

0 投票
4 回答
2018 浏览

对于 ruby​​/webrick,我需要 windows 来识别 shebang (#!) 符号

(请耐心等待,我保证这会到达 shebang 和 windows。)

我将最简单的 WEBRick 服务器放在一起:

再简单不过了。这个基本服务器确实接受 http 连接(firefox、internetexplorer、wget、TELENT)并适当地处理它们,只要我只是获取静态文档。但是,如果我将目录中的一个文件设置为具有 .cgi 扩展名,我会在服务器终端上得到 500 和以下信息:

我在命令行上做了一些事情来模仿 cgi_runner.rb 第 45 行发生的事情

显然,WEBrick 尚未获准登陆 Windows。您通常对公司偏执的头痛使我无法修改 webrick,所以我可以在 c:/rubyCGI/test.cgi 中获得操作系统(windows)识别的 shebang 表示法,这样我就不必每次都明确告诉它要使用哪个解释器采用? 我可以将所有 .cgi 文件分配为与 ruby​​ 相关联,但从长远来看,这会受到限制。

更新:自从发布此内容后,我想到可能根本无法从 ruby​​ 运行 cgi Web 服务器;ruby 没有分叉支持。由于无法派生进程,cgi 服务器将不得不一次执行每个 cgi 脚本,在第一个完成时忽略所有并发请求。虽然这对某些人来说可能是可以接受的,但它不适用于我的应用程序。尽管如此,我仍然对我最初的问题的答案非常感兴趣——让 shebang 在 windows 下工作。

0 投票
24 回答
190926 浏览

父母退出后如何使子进程死亡?

假设我有一个进程恰好产生一个子进程。现在,当父进程因任何原因(正常或异常,通过 kill、^C、断言失败或其他任何原因)退出时,我希望子进程终止。如何正确地做到这一点?


关于stackoverflow的一些类似问题:


关于Windows的 stackoverflow 的一些类似问题:

0 投票
3 回答
31801 浏览

Java - C-Like Fork?

是否可以使用新的独立 jvm 进程在 java 中进行“C 类”分叉?

如何?