Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
プロセスの生成 exec編
Search
Satoru Takeuchi
PRO
December 29, 2024
Technology
98
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
プロセスの生成 exec編
以下動画のテキストです。
https://youtu.be/0qsIC-lpP8E
Satoru Takeuchi
PRO
December 29, 2024
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
70
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
95
あなたの知らないバージョン命名規則
sat
PRO
3
900
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
64
Machine Check Exception
sat
PRO
2
67
バイナリダンプの模様を読む
sat
PRO
0
89
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
89
114-ファイルのshallow_copy.pdf
sat
PRO
2
58
113-Btrfsのスナップショット.pdf
sat
PRO
0
41
Other Decks in Technology
See All in Technology
Oracle Cloud Network Path Analyzerを試してみた/I Tried Out Oracle Cloud Network Path Analyzer
masakiokuda
1
110
AI時代、データエンジニアが一番おもろい
genshun9
0
680
AIエージェントの権限管理 3: Agentic RAG の Fine grained access control 編
ren8k
0
180
人間はどの意思決定を手放せるのか
kawasima
15
7.9k
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
600
C#コードの結合を可視化する Roslyn解析による設計改善と リファクタリング判断
dora56
0
330
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
170
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
4
690
時うどん〜Socket.getifaddrsで学ぶネットワーク編 / Tokiudon: The Socket.getifaddrs Edition
coe401_
4
210
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
460
CLIライブラリ開発を支える技術
htnabe
0
140
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
540
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Designing Powerful Visuals for Engaging Learning
tmiket
1
570
Darren the Foodie - Storyboard
khoart
PRO
4
3.9k
A Soul's Torment
seathinner
8
3.6k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
A better future with KSS
kneath
240
18k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Accessibility Awareness
sabderemane
1
220
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Become a Pro
speakerdeck
PRO
31
6.3k
30 Presentation Tips
portentint
PRO
1
400
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