Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
プロセスの生成 exec編
Search
Satoru Takeuchi
PRO
December 29, 2024
Technology
1
65
プロセスの生成 exec編
以下動画のテキストです。
https://youtu.be/0qsIC-lpP8E
Satoru Takeuchi
PRO
December 29, 2024
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
Rook: Intro and Deep Dive With Ceph
sat
PRO
1
90
会社員しながら本を書いてきた知見の共有
sat
PRO
3
770
デバイスにアクセスするデバイスファイル
sat
PRO
1
33
ファイルシステムのデータを ブロックデバイスへの操作で変更
sat
PRO
1
29
デバイスドライバ
sat
PRO
0
45
マルチスレッドの実現方法 ~カーネルスレッドとユーザスレッド~
sat
PRO
2
120
共有メモリ
sat
PRO
3
67
マルチスレッドプログラム
sat
PRO
3
56
Linuxのブートプロセス initramfs編
sat
PRO
2
79
Other Decks in Technology
See All in Technology
標準技術と独自システムで作る「つらくない」SaaS アカウント管理 / Effortless SaaS Account Management with Standard Technologies & Custom Systems
yuyatakeyama
3
1.2k
Azure AI Foundryでマルチエージェントワークフロー
seosoft
0
180
Snowflake Summit 2025 データエンジニアリング関連新機能紹介 / Snowflake Summit 2025 What's New about Data Engineering
tiltmax3
0
310
AIの最新技術&テーマをつまんで紹介&フリートークするシリーズ #1 量子機械学習の入門
tkhresk
0
130
セキュリティの民主化は何故必要なのか_AWS WAF 運用の 10 の苦悩から学ぶ
yoh
1
110
Clineを含めたAIエージェントを 大規模組織に導入し、投資対効果を考える / Introducing AI agents into your organization
i35_267
4
1.6k
Amazon ECS & AWS Fargate 運用アーキテクチャ2025 / Amazon ECS and AWS Fargate Ops Architecture 2025
iselegant
16
5.4k
急成長を支える基盤作り〜地道な改善からコツコツと〜 #cre_meetup
stefafafan
0
120
Microsoft Build 2025 技術/製品動向 for Microsoft Startup Tech Community
torumakabe
2
260
AIエージェント最前線! Amazon Bedrock、Amazon Q、そしてMCPを使いこなそう
minorun365
PRO
13
5k
Wasm元年
askua
0
140
UIテスト自動化サポート- Testbed for XCUIAutomation practice
notoroid
0
130
Featured
See All Featured
KATA
mclloyd
29
14k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Making the Leap to Tech Lead
cromwellryan
134
9.3k
Writing Fast Ruby
sferik
628
61k
We Have a Design System, Now What?
morganepeng
53
7.7k
Rails Girls Zürich Keynote
gr2m
94
14k
Done Done
chrislema
184
16k
Bash Introduction
62gerente
614
210k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Code Reviewing Like a Champion
maltzj
524
40k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Automating Front-end Workflow
addyosmani
1370
200k
Transcript
プロセスの生成 exec編 Dec. 29th, 2024 Satoru Takeuchi X: satoru_takeuchi 1
exec関数とは • Linuxで新しいプログラムを実行する関数 • forkと似て非なるもの ◦ fork: プロセスを複製して新しいプロセスを作成する ◦ exec:
同じプロセス上で新しいプログラムを実行する 2
exec(): CPU上で動作する処理の観点 1. CPU上で動くプロセスがexec()を呼ぶ 2. exec()後にプロセスはexecで指定したプログラムを実行する 3 CPU exec()呼び出し exec()から復帰
プロセス (プログラムA) カーネル プロセス (プログラムB)
exec: 物理メモリの観点 4 プロセスの メモリ (プログラムA) (1) exec()呼び出し時 カーネルの メモリ
プロセスの メモリ (プログラムA) カーネルの メモリ プロセスの メモリ (プログラムB) カーネルの メモリ CPU上で 実行中のコード (2) カーネルによるexec()の処理 (3) exec()復帰後 CPU上で 実行中のコード CPU上で 実行中のコード (プログラムBの エントリポイント) プロセスの メモリ (プログラムB) 新規割り当て 後で解放
コード #!/usr/bin/python3 import os print(f"プログラムA(exec前): pid={os.getpid()}") os.execve("./b.py", ["b.py"],{}) print("この業は実行されないはず") 5
プログラムA(a.py) プログラムB(b.py) #!/usr/bin/python3 import os print(f"プログラムB(exec後): pid={os.getpid()}")
実行結果 • プログラムAをするとexec呼び出しによってプログラムBが実行される • execの後のprint()文は実行されない • execによってpidは変わらない 6 $ ./a.py
プログラムA(exec前): pid=135225 プログラムB(exec後): pid=135225
まとめ • 新しいプログラムを実行する際はexec関数を呼び出す • forkと似て非なるもの ◦ fork: プロセスを複製して新しいプロセスを作成する ◦ exec:
同じプロセス上で新しいプログラムを実行する • 📝 ひとくちにexecといっても“man 3 exec”を見るとexecl,execlp…など似たような ものがたくさんあるが、全部ただの変種なので気にしなくていい 7