当前位置: 首页 > 知识库问答 >
问题:

Bash分叉一个subshell

宗政浩慨
2023-03-14

我有一个bash脚本,我想在分叉进程中运行一些不相关的命令。这些命令应仅在分叉进程中运行,而其他命令应仅在父进程中运行。

echo "I am parent statement 1"
( echo "I am child statement 1"; echo "I am child statement 2"; sleep 30) &
echo "I am parent statement 2"

在本例中,父shell是否只输出“父”语句,而子shell是否只回显“子”语句?或者返回时子语句会回显父语句2吗?

同样,父母会等待孩子(睡30分钟)吗?还是父母退出,孩子继续跑30秒?

共有1个答案

骆磊
2023-03-14

每个进程将只运行自己的语句。

如果您稍微修改一下脚本,您可以进行一个实验,表明孩子比父母长寿。

#!/bin/bash

echo "I am parent statement 1"
( echo "I am child statement 1"; echo "I am child statement 2"; sleep 30) &
jobs -l
echo "I am parent statement 2"
echo $$

如果您运行脚本,然后执行< code>ps aux | grep

 类似资料:
  • 在Chapter 4, 社会和政治的基础架构的the section called “分叉能力(forkability)”,我们说了潜在的分叉能力对于项目管理的重要影响。但是当分叉确实发生时,我们应该怎么做?你应该如何处理,会发生怎样的情况?与之对应,何时你应当开始一个分叉。 答案取决于你选择的分叉类型。有一些分叉源于对于项目方向的友善但不可调和的异议;也有一些由于技术分歧和个人冲突。当然,很难说

  • 写一个脚本,任意输入一个目录和一个字符串,对输入的字符串进行判断,如果字符串内容等于”ww”,则将该目录下的所有子目录删除,所有子文件拷贝到/var 目录下:如果字符串内容等于”rr”,则在该目录下创建 test1.txt 文件

  • 本文向大家介绍C / C ++中的C vs BASH叉子炸弹?,包括了C / C ++中的C vs BASH叉子炸弹?的使用技巧和注意事项,需要的朋友参考一下 已经很清楚,BASH分支炸弹比其C程序版本强大得多。主要原因是在BASH中,创建的进程与父进程分离。如果父进程(我们最初启动的进程)被销毁或杀死,则其余或其余进程继续存在。但是在使用C实现的情况下,如果父进程被销毁或杀死,则列出的子进程会自

  • 主要内容:创建一个分支分支是独立的线路和开发过程的一部分。 分支的创建包括以下步骤。 创建一个分支 步骤(1): 登录到您的GitLab帐户并转到项目部分下的项目。 步骤(2): 要创建分支,请单击“Repository” 部分下的 Branches 选项,然后单击“New branch” 按钮。 步骤(3): 在New branch 界面中,输入分支的名称,然后单击 Create branch 按钮。 步骤(4):

  • 主要内容:分叉项目分叉(Fork)是原始存储库的一个副本,您可以在不影响原始项目的情况下进行更改。 分叉项目 步骤(1): 要分叉一个项目,请项目详细下面单击按钮,以上节中创建的项目为例,如下所示: 步骤(2): 在分叉项目之后,需要通过单击将分叉的项目添加到分支组: 注意:如果提示没有命名空间权限(namespace),可以先创建一个分组后,再创建分叉。 步骤(3): 接下来,它将开始处理项目一段时间。 步骤(4

  • 问题内容: 我以前在应用程序中使用过线程,并且对线程的概念非常了解,但是最近在我的操作系统讲座中,我遇到了fork()。这类似于线程。 我用谷歌搜索了它们之间的区别,我知道: Fork只是一个看起来与旧流程或父流程完全相似的新流程,但它仍然是具有不同流程ID并拥有自己内存的不同流程。 线程是轻量级进程,具有较少的开销 但是,我仍然有一些疑问。 什么时候应该更喜欢fork()而不是线程? 如果我想以