Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ノリでもいけるシェル自作
Search
ONOYAMA Shodai
August 23, 2021
Technology
0
35
ノリでもいけるシェル自作
2021年度第4回LT会
ONOYAMA Shodai
August 23, 2021
Tweet
Share
More Decks by ONOYAMA Shodai
See All by ONOYAMA Shodai
DevOps視点でAWS re:invent2024の新サービス・アプデを振り返ってみた
oshanqq
0
430
Amazon Data Firehoseの入門から実戦まで
oshanqq
0
400
AWSを始めた頃に陥りがちなポイントをまとめてみた
oshanqq
1
4k
AWS版GitHub?Amazon CodeCatalystの全体像をまとめてみた
oshanqq
2
5.6k
Amazon CloudFront の機能、カテゴリ分けすると理解しやすい説
oshanqq
0
750
ジュニアレベルのAWS学習戦略
oshanqq
1
1.4k
出張! #DevelopersIO IT技術ブログの中の人が語る勉強会 「【速報】AWSの生成AIサービスであるAmazon Bedrock がリリースされたので朝イチで触ってみた」について語る
oshanqq
0
740
EC2 Instance Connectを図解してみた
oshanqq
1
1.7k
初海外・初ベガス・初re:Inventで新卒が感じたこと
oshanqq
1
800
Other Decks in Technology
See All in Technology
re:Inventで気になったサービスを10分でいけるところまでお話しします
yama3133
1
120
コミューンのデータ分析AIエージェント「Community Sage」の紹介
fufufukakaka
0
440
法人支出管理領域におけるソフトウェアアーキテクチャに基づいたテスト戦略の実践
ogugu9
1
210
今からでも間に合う!速習Devin入門とその活用方法
ismk
1
490
AI時代の開発フローとともに気を付けたいこと
kkamegawa
0
2.2k
多様なデジタルアイデンティティを攻撃からどうやって守るのか / 20251212
ayokura
0
280
Kiro Autonomous AgentとKiro Powers の紹介 / kiro-autonomous-agent-and-powers
tomoki10
0
320
WordPress は終わったのか ~今のWordPress の制作手法ってなにがあんねん?~ / Is WordPress Over? How We Build with WordPress Today
tbshiki
0
170
AI時代におけるアジャイル開発について
polyscape_inc
0
130
エンジニアとPMのドメイン知識の溝をなくす、 AIネイティブな開発プロセス
applism118
4
960
Agentic AI Patterns and Anti-Patterns
glaforge
1
200
生成AI時代の自動E2Eテスト運用とPlaywright実践知_引持力哉
legalontechnologies
PRO
0
210
Featured
See All Featured
Practical Orchestrator
shlominoach
190
11k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Automating Front-end Workflow
addyosmani
1371
200k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Balancing Empowerment & Direction
lara
5
790
Designing for humans not robots
tammielis
254
26k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Transcript
ノリでもいけるシェル自作 o-xian
名前 : o-xian 所属 : 九州工業大学 宇宙システム工学科3年生
・ あさって内視鏡こわい
本題
• シェル知ってる? • シェル使ってる?
シェルって何や ・ 人間の入力をOSに伝えるプログラム ・ 様々なコマンドを受け取る (ls, cd, pwd …) ・
bash, zshなど様々な種類がある
これを自作する
シェル自作に必要な知識 ・ プロセス ・ システムコール ・ カーネル
シェル自作に必要な知識 ・ プロセス ・ システムコール ・ カーネル
プロセス ・ お仕事中のプログラム cargo run -> プロセス プロセス プロセス
プロセス ・ プロセスは独立している プロセス プロセス
プロセス ・ どうやって外部にアクセスする? プロセス
シェル自作に必要な知識 ・ プロセス ・ システムコール ・ カーネル
カーネル ・ オペレーティングシステムの中核となる部分
システムコール ・ プロセスからカーネルへの「お願い」 お願い 実行 システムコール
システムコール ・ いろいろな種類がある。 create, execve, fork, stat… ・ 今回のLTで扱うシェル自作で使うのは fork,
execve
システムコール ・ fork() プロセスのコピーを作る ・ execve() プロセスを他のプロセスに変身させる
自作シェルの機能 ・ コマンドの実行 ※現状、過不足ない2単語のコマンドを受け付ける 例:cat Cargo.toml, ls –a …
コマンドの実行 ・ 親のプロセスが自身の複製(子プロセス)をつくる fork()
コマンドの実行 ・ 子プロセスが別のプログラムに変身する execve() 子プロセスが終了するまで待機
コマンドの実行 ・ プログラムが終了したら、親のプロセスが再開する 再開
今回のLTで扱うシェルの概要 ・ コマンドラインから入力を受け取る。 ・ 入力をパースする。 ・ プロセスをforkする。 ・ 親プロセスでは、子プロセスが終了するまで待機する。 ・
子プロセスではコマンドを実行する。 実行が完了したら子プロセスは終了する。 無限ループ
None
None
今後 ・ かろうじて「シェル」と言えなくもない状態 ー>機能拡張(組み込みコマンド、パイプetc…) ・ Rustの練習も兼ねる
質問どぞ