2019-07-01から1ヶ月間の記事一覧
スタックとヒープの違いが見抜ける人でないと(putenv()を使うのは)難しい 『 Linuxプログラミングインタフェース』6章の環境変数の続き。 C言語で環境変数を扱うための関数はstdlib.hに用意されているが、その中でも扱いが難しいのがputenv()である。 int …
環境変数の環境とは 『 Linuxプログラミングインタフェース』6章では環境変数も扱われている。 プロセスごとに環境変数が設定されていて、Linux上では/proc/PID/environから、C言語上ではグローバル変数**environから取得する。 Python os.environに辞書形式…
nechoとは 『 Linuxプログラミングインタフェース』6章はプロセスの話。 とりあえずすぐに書けそうだった(というより散々書いてきた)コマンドラインパラメータ取得のサンプルコードをPythonおよびRustで書いてみる。 C言語の場合はargcとargvであるが、そ…
ファイルディスクリプタを複製すると何が起きる? 『 Linuxプログラミングインタフェース』5章はファイルIO詳細ということで、fcntl周りの話などがメインである。 演習問題としてファイルディスクリプタを複製するdupコマンドおよびdup2コマンドをfcntlで実…
1対1対応の演習で例題しかやらなかったタイプ 『 Linuxプログラミングインタフェース』4章の演習としてteeコマンドの実装をする。 teeコマンドは標準入力をEOFまで受け取り、標準出力と指定したファイルに書き出すコマンドである。 デフォルト動作は、指定し…
l is for long int 『 Linuxプログラミングインタフェース』4章の後半戦としてlseek()を使ったプログラミングを行う。 lseek()はファイルオフセットを操作するシステムコールである。 名前のlはlongの意味で、引数offsetと返り値がlongであった名残だそうで…
転回 『Unix/Linuxプログラミング 理論と実践』をダシにしてRustのお勉強、システムプログラミングよりのPythonのお勉強をしようと思い立ったものの、『Unix/Linuxプログラミング 理論と実践』の who コマンド実装でmacOSとDocker上のUbuntu Linuxの違いで疲…
些細なる第一歩 プログラミング言語Rustの勉強をしたいと常日頃考えていたが、中々手を出せずにいた。 ずっと仕事ではPythonを使っているが、それしかできないのは流石に幅が狭かろう、と。 少しだけ『The Rust Programming Language 2nd edition』を読んで…