c - & 是如何在 bash 中实现的?

标签 c bash background-process

&    # disown the functions

众所周知,& 将任务置于后台,最重要的是否认该任务。

但是它是如何实现的呢?

最佳答案

如果没有 &,shell 会 fork 自己,在子进程中调用 execve 来启动任务,然后通过 waitwaitpid 让子进程终止(挂起 shell),除此之外什么都不做。

当启动后台任务时,shell 再次 fork 自身,调用 execve 以在子进程中启动任务,但不等待其终止,而是在启动后立即返回控制权的任务。

关于c - & 是如何在 bash 中实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7230592/

相关文章:

结合 fuse 和 rpc 进行远程目录列表

arrays - Bash 数组键与现有变量冲突

ios - 位置更新后台模式应用程序被拒绝

android - 在 Android 后台运行一个循环

mysql - bash/mysql 更新行计数中的字符串提取

javascript - php - jar 文件的后台进程,如何在进程完成时获得异步通知?

c - 具有不同优化级别的 GNU 并行运行 Makefile

c - 是否可以在终端上以更慢的速度运行命令行程序?

c - 关于C中的switch case,为什么打印不出来?

linux - BASH中多列文件的反向排序顺序