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
ノリでもいけるシェル自作
Search
ONOYAMA Shodai
August 23, 2021
Technology
47
0
Share
ノリでもいけるシェル自作
2021年度第4回LT会
ONOYAMA Shodai
August 23, 2021
More Decks by ONOYAMA Shodai
See All by ONOYAMA Shodai
Claude Codeウェビナー資料 - AWSの最新機能をClaude Codeで高速に検証する
oshanqq
0
1.1k
DevOps視点でAWS re:invent2024の新サービス・アプデを振り返ってみた
oshanqq
0
580
Amazon Data Firehoseの入門から実戦まで
oshanqq
0
510
AWSを始めた頃に陥りがちなポイントをまとめてみた
oshanqq
1
4.1k
AWS版GitHub?Amazon CodeCatalystの全体像をまとめてみた
oshanqq
2
5.8k
Amazon CloudFront の機能、カテゴリ分けすると理解しやすい説
oshanqq
0
850
ジュニアレベルのAWS学習戦略
oshanqq
1
1.5k
出張! #DevelopersIO IT技術ブログの中の人が語る勉強会 「【速報】AWSの生成AIサービスであるAmazon Bedrock がリリースされたので朝イチで触ってみた」について語る
oshanqq
0
840
EC2 Instance Connectを図解してみた
oshanqq
1
1.9k
Other Decks in Technology
See All in Technology
APIテストとは?
nagix
0
160
美味しいスイスチーズを作ろう🧀🐭
taigamikami
1
190
『家族アルバム みてね』における インシデント対応との向き合い方 / Approach incident response in Family Album
kohbis
2
280
A Harness for Behaviour: how to get AI to generate code that does what we intend, or "TDD in the age of AI"
xpmatteo
1
520
電子辞書Brainをネットに繋げてみた(自力編)
raspython3
0
390
Terraformモジュールは、なぜ「魔境」化するのか
hayama17
1
130
インフラが苦手でも大丈夫! 紙芝居 Kubernetes -WWGT 10周年編-
aoi1
1
310
「コーディング」しない人のための Claude Code 入門 ChatGPT の次の一歩 — 業務に組み込む 育成・共有・自動化
rfdnxbro
2
570
GitHub Copilot CLIでWebアクセシビリティを改善した話
tomokusaba
0
140
AI駆動開発でなんでもハンズオン環境をつくってみた
yoshimi0227
0
180
string地獄を脱出する
sansantech
PRO
1
110
long-running-tasks
cipepser
2
450
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
What's in a price? How to price your products and services
michaelherold
247
13k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Unsuck your backbone
ammeep
672
58k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
240
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
570
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
150
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
520
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
200
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の練習も兼ねる
質問どぞ