首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在启动start_child调用的进程中注册子进程

是指在Erlang/OTP中,通过调用start_child函数创建的子进程可以在父进程中进行注册,以便在需要时能够方便地对其进行管理和监控。

注册子进程的主要目的是为了能够方便地对子进程进行监控、发送消息和终止子进程。通过注册,父进程可以使用子进程的注册名来向其发送消息,而无需知道子进程的PID(进程标识符)。此外,父进程还可以通过监控子进程来获取其退出原因,并在必要时采取相应的措施。

在Erlang/OTP中,可以使用register/2函数将子进程注册到一个唯一的原子名上。例如,可以使用以下代码将子进程注册为名为child的进程:

代码语言:erlang
复制
start_child(Parent) ->
    Child = spawn(fun child/0),
    register(child, Child),
    Parent ! {child_started, Child}.

在上述代码中,start_child函数创建了一个名为child的子进程,并将其注册到父进程中。然后,父进程可以向子进程发送消息,例如Parent ! {child_started, Child},以通知其他进程子进程已经启动。

注册子进程后,父进程可以使用registered/0函数获取所有已注册的进程名,并使用whereis/1函数获取特定进程名对应的PID。例如,可以使用以下代码获取名为child的进程PID:

代码语言:erlang
复制
ChildPid = whereis(child).

通过注册子进程,可以更方便地进行进程间通信和管理。在实际应用中,可以根据具体需求选择适合的注册名,并根据需要对子进程进行监控、发送消息和终止等操作。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux 守护进程启动方法

"守护进程"(daemon)就是一直在后台运行进程(daemon)。 本文介绍如何将一个 Web 应用,启动为守护进程。 一、问题由来 Web应用写好后,下一件事就是启动,让它一直在后台运行。...{ res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World'); }).listen(5000); 你命令行下启动它...变成守护进程第一步,就是把它改成"后台任务"(background job)。 $ node server.js & 只要在命令尾部加上符号&,启动进程就会成为"后台任务"。...四、disown 命令 通过"后台任务"启动"守护进程"并不保险,因为有的系统huponexit参数可能是打开(on)。 更保险方法是使用disown命令。...# 列出所有进程 $ forever list nodemon一般只开发时使用,它最大长处在于 watch 功能,一旦文件发生变化,就自动重启进程

4.5K50
  • Linux守护进程启动方法

    这篇文章主要为大家详细介绍了Linux守护进程启动方法,本文介绍如何将一个 Web 应用,启动为守护进程,感兴趣小伙伴们可以参考一下 "守护进程"(daemon)就是一直在后台运行进程(daemon...res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World');}).listen(5000); 你命令行下启动它...变成守护进程第一步,就是把它改成"后台任务"(background job)。 $ node server.js & 只要在命令尾部加上符号&,启动进程就会成为"后台任务"。...继承当前 session (对话)标准输出(stdout)和标准错误(stderr)。因此,后台任务所有输出依然会同步地命令行下显示。不再继承当前 session 标准输入(stdin)。...四、disown 命令 通过"后台任务"启动"守护进程"并不保险,因为有的系统huponexit参数可能是打开(on)。 更保险方法是使用disown命令。

    4.5K00

    Linux 守护进程启动方法

    Linux 守护进程启动方法 “守护进程”(daemon)就是一直在后台运行进程(daemon)。 本文介绍如何将一个 Web 应用,启动为守护进程。...{ res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World'); }).listen(5000); 你命令行下启动它...变成守护进程第一步,就是把它改成”后台任务”(background job)。 $ node server.js & 只要在命令尾部加上符号&,启动进程就会成为”后台任务”。...四、disown 命令 通过”后台任务”启动”守护进程”并不保险,因为有的系统huponexit参数可能是打开(on)。 更保险方法是使用disown命令。...# 列出所有进程 $ forever list nodemon一般只开发时使用,它最大长处在于 watch 功能,一旦文件发生变化,就自动重启进程

    5K81

    PGwal receiver进程如何启动

    备机receiver进程是由恢复进程即startup进程发启。具体如下: 1)恢复进程首先需要打开需要恢复WAL日志文件。通过函数WaitForWALToBecomeAvailable完成。...这3种日志源循环切换,直至找到一个可打开日志文件 3)备机恢复进程首先从归档目录下找需要日志文件打开。...6)流复制发启拉取起点及时间线设置: (1)读取checkpoint时就需要发启流复制,此时日志位置ptr是checkpointredo位置,时间线tli是checkpoint时间线。...7)向备机主进程发送PMSIGNAL_START_WALRECEIVER信号 8)备机主进程接收到信号后,sigusr1_handler函数处理该信号。...标记WalReceiverRequested为true,调用MaybeStartWalReceiver->StartWalReceiver最终fork出一个子进程,并标记为walreceiver,进入WalReceiverMain

    81310

    2018年swoole实战7-进程详解创建子进程调用外部程序查看进程树多进程实战案例

    PHP_EOL; // 子进程id swoole_process::wait(); ☁ process php process.php 67540 swoole创建进程 调用外部程序 process.php...charset=utf-8"); $time = date('Y-m-d H:i:s', time()); $response->end("{$time}--这是swoole提供http...通过 pstree 工具可以查看相关进程关系 brew install pstree # mac 安装 pstree ps aux | grep process.php # 获取进程id pstree...-p 69932 # 显示进程树 多进程实战案例 如果用php去抓取网页内容,传统方式是用一个for循环,将url逐个遍历,假设每个url耗时1秒,6个url就需要耗时6s,这种方式效率太低了。...通过swoole进程管理模块,我们可以实现多进程抓取内容,每个进程对应负责一个url,从而实现1秒完成抓取任务 新建 process_curl.php <?

    56820

    3.x Unix系统上面启动守护进程

    12.14 Unix系统上面启动守护进程 问题 你想编写一个作为一个Unix或类Unix系统上面运行守护进程运行程序。...解决方案 创建一个正确守护进程需要一个精确系统调用序列以及对于细节控制。 下面的代码展示了怎样定义一个守护进程,可以启动后很容易停止它。 #!...r}'.format(sys.argv[1]), file=sys.stderr) raise SystemExit(1) 要启动这个守护进程,用户需要使用如下命令: bash % daemon.py...守护进程可以完全在后台运行,因此这个命令会立即返回。 不过,你可以像上面那样查看与它相关pid文件和日志。...要停止这个守护进程,使用: bash % daemon.py stop bash % (adsbygoogle = window.adsbygoogle || []).push({});

    53630

    Erlang设计原则Behaviour

    调用terminate handle_cast(stop, State) -> ?...,只重启该进程init时候会启动参数内进程 simple_one_for_one: 同one_for_one,但是init时候不会启动进程,需要动态调用启动 one_for_all: 一个子进程终止...,将重启所有子进程 rest_for_one: 一个子进程终止,将按顺序重启这个子进程和之后顺序进程 Times: 次数(监控频率) Sec: 秒数(监控频率),如果在Sec秒内重启次数超过Times...,则终止所有进程,并终止监控树,将由父进程决定它命运 ChildSpec参数{Id, StartFunc, Restart, Shutdown, Type, Modules} Id 子进程ID标识符...添加监控树区别在于:监控树退出并重启后,动态添加进程会丢失。

    73431

    实战 | 进程启动技术思路和研究

    常规api创建进程 通过常用api来创建进程是常规启动进程方式,最常用几个api有WinExec、ShellExecute、CreateProcess,我们一个一个来看一下 WinExec 首先是...,7ffd0000左右,PEB下方就是TEB,进程有几个线程就有几个TEB,每个TEB占一个4KB页面; 这个阶段是通过调用NtCreateThread()完成,主要包括:   ①创建和设置目标线程...第五阶段:启动初始线程 新创建线程未必是可以被立即调度运行,因为用户可能在创建时把标志位CREATE_ SUSPENDED设成了1; 如果那样的话,就需要等待别的进程通过系统调用恢复其运行资格以后才可以被调度运行...我们知道一般用户进程都在3环,而系统进程一般都在0环创建,那么我们可以尝试突破session0隔离来创建进程 思路 由于SESSION 0会话隔离,使得系统服务进程内不能通过直接调用CreateProcess...不需要使用进程环境块后,可以通过调用DestroyEnvironmentBlock函数进行释放。获取环境块之后,就可以调用CreateProcessAsUser来创建用户桌面进程了。

    1.1K50

    RabbitMQ网络框架代码分析

    RabbitMQ启动步骤是一个有向无环图,具体细节后面另外章节再聊,其中网络一块启动集中文件rabbit_network.erl中 boot() -> ok = record_distribution_listener...启动名为 rabbit_tcp_client_sup 监督者进程,这个监督者进程入口为 rabbit_client_sup:start_link,后面一长串为启动参数。...而rabbit_connection_sup监督者进程启动真正干活 rabbit_reader进程,这个后面再细讲。...再以这些参数启动 tcp_listener_sup 监督者进程,后者再会启动 tcp_acceptor_sup和 tcp_listener子进程,tcp_acceptor_sup还是一个监督者进程,它会启动最终干活...tcp_listener进程初始化时会调用 AcceptorSup 也就是 tcp_acceptor_sup 来启动工作线程,真正干活是tcp_acceptor进程,这个进程会通过 prim_inet

    38020

    Linux中查看端口被哪个进程占用、进程调用配置文件、目录等

    1.查看被占用端口进程,netstat/ss -antulp | grep :端口号 2.通过上面的命令就可以列出,这个端口被哪些应用程序所占用,然后找到对应进程PID 3.根据PID查询进程...如果想详细查看这个进程,PID具体是哪一个进程,可以通过命令方式进行查看进程详细信息,ps -ef | grep 进程PID 或者ps -aux | grep 进程PID 通过执行上面的命令,...就可以看到这个进程详细信息,同时也可以看到这个进程存在目录,进程执行文件、配置文件等信息。...4.查看进程所在目录。...通过ll /proc/进程PID/cwd命令,可以直接查看进程所在目录,这样的话就可以快速定位到进程目录 查找他进程目录之后,就可以对这个应用程序进行一系列操作,比如说重启删除等!

    5.1K20

    图解 | 一图摸清Android应用进程启动

    然后看下系统服务启动,不管是由init进程启动独立进程系统服务如SurfaceFlinger,还是由SystemServer进程启动非独立进程系统服务如AMS,都是ServiceManager...进程中完成注册和获取进程通信上使用了Androidbinder机制。...AMS发送socket请求 Android应用进程启动是被动式Launcher桌面点击图标启动一个应用组件如Activity时,如果Activity所在进程不存在,就会创建并启动进程。...Zygote处理socket请求 从 图解Android系统启动 一文可知,ZygoteInitmain函数中,会创建服务端socket, //ZygoteInit.java public static...ActivityThreadmain函数,而是通过抛出一个异常进行捕获,捕获后再执行,这样可以清除初始化过程产生调用堆栈,让ActivityThreadmain函数看起来像个应用程序进程入口函数

    89320

    当你 Linux 上启动一个进程时会发生什么?

    我们要做启动一个进程。我们已经博客上讨论了很多关于系统调用问题,每当你启动一个进程或者打开一个文件,这都是一个系统调用。...尽管 OS X 上,人们使用 posix_spawn,而 fork 和 exec 是不提倡,但我们将讨论是 Linux。 Linux 中每个进程都存在于“进程树”中。...所以,假设我要启动一个名为 ls 进程来列出一个目录。我是不是只要发起一个进程 ls 就好了呢?不是的。...为何 fork 并非那么耗费资源(写入时复制) 你可能会问:“如果我有一个使用了 2GB 内存进程,这是否意味着每次我启动一个子进程,所有 2 GB 内存都要被复制一次?...事实上,Linux 为 fork() 调用实现了写时复制copy on write,对于新进程 2GB 内存来说,就像是“看看旧进程就好了,是一样!”。

    1.1K70

    Linux世界中追寻伟大One Piece】进程间关系与守护进程

    2.2 -> 如何创建会话 可以调用setseid函数来创建一个会话, 前提是调用进程不能是一个进程组长。...: 调用进程会变成新会话会话首进程。...此时, 新会话中只有唯一一个进程调用进程会变成进程组组长。 新进程组ID就是当前调用进程ID。 该进程没有控制终端。 如果在调用setsid之前该进程存在控制终端, 则调用之后会切断联系。...控制终端是保存在PCB中信息,我们知道fork进程会复制PCB中信息,因此由Shell进程启动其它进程控制终端也是这个终端。...例如下列命令就是一个作业,它包括两个命令,执⾏时Shell将在前台启动由两个进程组成作业。

    1100

    android进阶之了解Zygote进程启动及“孵化”

    一个新进程,也就是说子进程也会进入这个文件main函数,因此, //这里main函数被调用并不只是Zygote启动时候被调用。...而Zygote进程main函数则还有以下会讲到5项工作) 下面一一介绍三个函数具体工作: 启动虚拟机 通过调用startVM()函数启动虚拟机: int AndroidRuntime::startVm...调用caller.run()方法,启动进程直接进入子进程main()方法(非system_server进程,该进程由r.run()启动main()方法) 下面一一讲解着五项工作内容: registerServerSocket...接着调用forkSystemServer()函数来fork一个新进程,他有两个返回值,一个在当前进程中返回,另一个新创建进程中返回,在当前进程中返回值是新创建pid值,而新创建进程返回值是0...当应用进程启动之后,会把这个类加载到进程调用main()方法作为应用程序进程入口。

    76710

    iOS 15 Beta升级卡死更新进程,无法启动怎么办?

    但是许多用户反馈升级一直卡死“准备更新”、“验证更新”,或者设备无法启动,卡在白苹果、恢复模式等。 [2t60le0wb6.jpg?...,我将介绍当iOS 15测试版升级卡死更新进程中时该怎么办。...方法二:删除更新文件 iOS设备更新时,会先从苹果服务器下载更新文件。当更新过程卡死时,您可以通过删除更新文件来强制您iOS设备重新启动更新。 打开iPhone设置,向下滚动并点击“常规”。...方法三、iOS系统修复 如果您iPhone仍然卡死更新进程中,或者卡在白苹果、恢复模式更状态,那么是时候修复您iOS系统了。...q-header-list=&q-url-param-list=&q-signature=c1c891f1c3c2086696da5c59dd0b27382961129b] 希望以上三种方法可以帮助您解决iOS升级卡死更新进程问题

    2.2K30
    领券