问题标签 [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.
c++ - 如何告诉 valgrind 对分叉进程进行 memcheck?
我有一个过程x
,我想用valgrind
. 问题是x
由 运行y
,而y
反过来又由 运行z
。我无法x
独立运行,因为y
并z
设置了环境x
,例如环境变量、命令行开关、所需的文件x
等。
- 有什么方法可以告诉我
valgrind
继续运行,z
但要遵循它找到的任何分叉并报告它们? - 有什么方法可以告诉我
valgrind
遵循任何分叉,但只报告名为的进程x
? - 有什么方法可以告诉我
valgrind
附加到已经运行的进程,就像我可以用 gdb 做的那样?
我不知道这是否重要,但我在 SuSE64 linux 和 valgrind-2.4.0 下运行。
谢谢!
php - PHP / Apache 中的进程分叉是个好主意吗?
我正在用 PHP 编写一个简单的应用程序,它偶尔需要执行一组相当密集的 MySQL 更新。我不特别希望这给用户造成延迟,所以我想知道使用 pcntl_fork()。
我不确定这到底是如何工作的:父进程完成后子进程会继续运行吗?父进程会结束,用户的页面加载会在子进程完成之前完全完成吗?
换句话说,这是让 PHP 脚本(在 Apache 下运行)在不延迟用户的情况下进行一些耗时的更新的安全方法,还是我应该让我的用户忍受一些延迟?
python - 用于虚拟主机控制面板应用程序的 CherryPy
很长一段时间以来,我一直想开始一个宠物项目,旨在及时成为一个网络托管控制面板,但主要专注于 Python 托管——这意味着我想为用户提供一种生成/启动 Django 的方法/ 面板中的其他框架项目。我似乎找到了用它来构建我的应用程序的完美工具:CherryPy。
这将允许我按照自己的方式进行操作,使用自己的 HTTP/HTTPS 服务器以及我最喜欢的编程语言构建应用程序。
但是现在出现了一个新问题:由于 CherryPy 是一个线程服务器,它是否适合这种任务?
会有很多耗时的任务,所以如果其中一个任务阻塞,其余试图访问其他页面的用户将等待并最终超时。
我想这种问题不会发生在基于分叉的服务器上。
你有什么建议?
php - 如何强制执行最大数量的分叉子项?
编辑:我已经标记了这个 C,希望得到更多的回应。我感兴趣的更多的是理论而不是特定的语言实现。因此,如果您是 C 编码员,请将以下 PHP 视为伪代码,并随时用 C 编写的答案来回应。
我试图通过让它并行而不是串行执行其任务来加速 PHP CLI 脚本。这些任务彼此完全独立,因此它们开始/完成的顺序无关紧要。
这是原始脚本(请注意,为清楚起见,所有这些示例都被剥离):
我已经设法使它与如下所示$items
并行工作:pcntl_fork()
现在我想扩展它,以便一次最多有 10 个孩子活跃。处理这个问题的最佳方法是什么?我尝试了几件事,但运气不佳。
c - 避免 fork()/SIGCHLD 竞争条件
请考虑以下fork()
/SIGCHLD
伪代码。
在上面的例子中有一个竞争条件。" "有可能/* child stuff */
在 " " 开始之前完成,/* parent stuff */
这可能导致孩子的 pid 在退出后被添加到孩子列表中,并且永远不会被删除。当应用程序关闭时,父母将无休止地等待已经完成的孩子完成。
我能想到的一种解决方案是有两个列表:started_children
和finished_children
. 我会添加到started_children
我现在添加到的同一个地方children
。但是在信号处理程序中,不是从children
我删除,而是添加到finished_children
. 当应用程序关闭时,父母可以简单地等到started_children
和之间的差异finished_children
为零。
我能想到的另一个可能的解决方案是使用共享内存,例如共享父母的孩子列表并让孩子.add
和.remove
他们自己?但我对这方面了解不多。
编辑:另一个可能的解决方案,这是我首先想到的,就是sleep(1)
在开头添加一个,/* child stuff */
但这对我来说很有趣,这就是我忽略它的原因。我什至不确定这是 100% 修复。
那么,您将如何纠正这种竞争条件?如果有一个完善的推荐模式,请告诉我!
谢谢。
linux - 程序分叉时如何清除输出缓冲区?
我有一个写入 FILE *cgiOut 的程序,在它写入流之后,我需要分叉并运行一个后台进程。问题是,在 fork 之后,FILE * 流似乎有时会被刷新,并且我得到重复的输出(在 fork 之后,所有打开的文件都被关闭,我猜这会导致缓冲区被刷新)。我怎样才能避免这种情况?我不想关闭主进程中的文件,因为它是在库中打开的,我认为它是一个套接字或管道。
multithreading - 启动和停止分叉进程
父进程是否可以在 Unix 中启动和停止子(分叉)进程?
我想实现一个任务调度程序(见这里),它能够同时运行多个进程,我认为这需要单独的进程或线程。
如何停止子进程的执行并在给定时间后恢复它?
(如果这只能通过线程实现,那么线程是如何实现的?)
c++ - 当父进程被杀死时,使用 fork() 创建的子进程是否会自动被杀死?
我正在用fork()
C/C++ 创建子进程。
当父进程结束(或由于某种原因被杀死)时,我希望所有子进程也被杀死。
是系统自动完成的吗?还是我必须自己做?
预先存在的类似问题:
c - 分析多进程程序
我想分析一个分叉和产生几个子进程的程序。我想看看在某些功能上花费了多少时间。什么分析器可以处理这项工作?
linux - C 中的管道损坏——pipe()、fork()、exec() 程序
我需要编写一个简单的程序:将有一个 Parent 和一些程序 [children](通过execl
Parent 开始)。孩子们以这种方式相互交流:孩子我感知到父母编号 J,父母向 J 发送消息(类似于 - “有消息给你”),J 发送给父母编号 K 等等。
还有一个问题——我的程序(通过strace
命令测试)试图向孩子发送一条消息,然后出现了损坏的管道错误。
如果有人查看代码并告诉我出了什么问题,我将不胜感激:
这是代码: