当我在Bash脚本中对函数使用`&`时会发生什么?

轨道轻赛

我正在用shell脚本调试一个怪异的东西,想知道是否误解了Bash的“ fork”(&)的工作方式,也许是因为我通常通过终端在单个命令中使用它,例如:

[~me]$ someExecutable &

现在,在一个shell脚本中:

foo() {
   echo "logic"
}

bar() {
   echo "idic"
}

baz() {
   echo "katra"
}

foo &
bar
baz

我的目的是要foo异步调用该函数,然后让脚本的其余部分在原始过程上下文中继续执行。

当我执行此示例脚本时,确实获得了预期的输出:

logic
idic
katra

(即,只有单个表观调用barbaz;我不在所有由相对困扰顺序的三条线的输出,这我明白可能会发生变化)

但是我可能会误解输出和脚本本身。如果是这样,那肯定可以解释我在实际代码中看到的怪异之处,并且使我不必再进行任何深入研究。

在子进程中,调用后,是否有可能foo继续执行分支的shell脚本?这意味着我的shell脚本的其余部分将执行两次吗?

当我&在Bash脚本中这样使用时,真正发生了什么

比约鲁夫人

在您的示例中,“&”号只是派生了对foo()的调用。它不是分叉整个脚本。仅foo()在单独的线程中运行,该线程在foo()完成时退出。bar()和baz()继续在同一线程中运行

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当我在函数中重新分配可变默认参数时会发生什么?

来自分类Dev

当我在嵌套的 React 组件中调用作为 props 传递的函数时会发生什么?

来自分类Dev

当我使用多个模拟时间时会发生什么?

来自分类Dev

当我截断正在使用的文件时会发生什么?

来自分类Dev

当我使用多个模拟时间时会发生什么?

来自分类Dev

当我在C ++中对类使用vector时会发生什么

来自分类Dev

当我尝试使用空的默认构造函数创建对象但在 ANSI C++ 中添加括号时会发生什么?

来自分类Dev

当我在先前定义的通过ajax调用的函数中使用相同的变量名时会发生什么?

来自分类Dev

当我们运行julia-lang脚本时会发生什么?

来自分类Dev

当我们运行julia-lang脚本时会发生什么?

来自分类Dev

在C ++中,当我对-128,127范围以外的整数使用static_cast <char>时会发生什么?

来自分类Dev

当我在同一指针中两次使用malloc()时会发生什么?

来自分类Dev

当我绑定到AliasProperty时会发生什么?

来自分类Dev

当我调用“ BufferStrategy.show()”时会发生什么?

来自分类Dev

当我放弃对iOS 6的支持时会发生什么?

来自分类Dev

MySql-当我用“ and”更新时会发生什么

来自分类Dev

当我多次调用requestAnimationFrame时会发生什么

来自分类Dev

当我放弃对iOS 6的支持时会发生什么?

来自分类Dev

当我将%esp移至%ebp时会发生什么?

来自分类Dev

当我不输入期望的命令时会发生什么?

来自分类Dev

当我忘记登录TTY时会发生什么?

来自分类Dev

当我调用“ BufferStrategy.show()”时会发生什么?

来自分类Dev

当我取消订阅 Observable 链时会发生什么?

来自分类Dev

当我们在Android Studio中添加DEPENDENCY时会发生什么

来自分类Dev

当我在异步回调中设置对象时会发生什么?

来自分类Dev

当我释放Delphi中可能不存在的内存时会发生什么?

来自分类Dev

当我在C ++中对未初始化的指针调用“删除”时会发生什么?

来自分类Dev

当我在代码中留下一些断点时会发生什么?

来自分类Dev

当我们在Collections.synchronizedMap()中传递哈希表时会发生什么

Related 相关文章

  1. 1

    当我在函数中重新分配可变默认参数时会发生什么?

  2. 2

    当我在嵌套的 React 组件中调用作为 props 传递的函数时会发生什么?

  3. 3

    当我使用多个模拟时间时会发生什么?

  4. 4

    当我截断正在使用的文件时会发生什么?

  5. 5

    当我使用多个模拟时间时会发生什么?

  6. 6

    当我在C ++中对类使用vector时会发生什么

  7. 7

    当我尝试使用空的默认构造函数创建对象但在 ANSI C++ 中添加括号时会发生什么?

  8. 8

    当我在先前定义的通过ajax调用的函数中使用相同的变量名时会发生什么?

  9. 9

    当我们运行julia-lang脚本时会发生什么?

  10. 10

    当我们运行julia-lang脚本时会发生什么?

  11. 11

    在C ++中,当我对-128,127范围以外的整数使用static_cast <char>时会发生什么?

  12. 12

    当我在同一指针中两次使用malloc()时会发生什么?

  13. 13

    当我绑定到AliasProperty时会发生什么?

  14. 14

    当我调用“ BufferStrategy.show()”时会发生什么?

  15. 15

    当我放弃对iOS 6的支持时会发生什么?

  16. 16

    MySql-当我用“ and”更新时会发生什么

  17. 17

    当我多次调用requestAnimationFrame时会发生什么

  18. 18

    当我放弃对iOS 6的支持时会发生什么?

  19. 19

    当我将%esp移至%ebp时会发生什么?

  20. 20

    当我不输入期望的命令时会发生什么?

  21. 21

    当我忘记登录TTY时会发生什么?

  22. 22

    当我调用“ BufferStrategy.show()”时会发生什么?

  23. 23

    当我取消订阅 Observable 链时会发生什么?

  24. 24

    当我们在Android Studio中添加DEPENDENCY时会发生什么

  25. 25

    当我在异步回调中设置对象时会发生什么?

  26. 26

    当我释放Delphi中可能不存在的内存时会发生什么?

  27. 27

    当我在C ++中对未初始化的指针调用“删除”时会发生什么?

  28. 28

    当我在代码中留下一些断点时会发生什么?

  29. 29

    当我们在Collections.synchronizedMap()中传递哈希表时会发生什么

热门标签

归档