/var/log/messages

Mar 5, 2018 - 1 minute read - Comments - Linux

Linux のしくみ

111p の_適当な Python スクリプトを、strace によってトレースしながら実行_というナニを最近作ったナニで試してみました。詳細確認するリキが無いのですがとりあえずざっくり見てみることに。

スクリプトはこんなカンジ。

def main():
    args = sys.argv
    filename = args[1]

    basestring = os.path.splitext(os.path.basename(filename))[0]
    result = re.sub(r'^\d{4}-\d{1,2}-\d{1,2}-', "", basestring)

    with open(filename) as f:
        post = frontmatter.loads(f.read())

    post.metadata.update({'slug' : result})
    print(frontmatter.dumps(post))

if __name__ == "__main__":
    main()

とりあえずファイルを開くあたりから確認してみるに以下なのかどうか。

open("2015-03-05-changing-actionbar-title-fontsize.markdown", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=616, ...}) = 0
ioctl(3, TCGETS, 0x7ffdedcbc800)        = -1 ENOTTY (Inappropriate ioctl for device)
lseek(3, 0, SEEK_CUR)                   = 0
ioctl(3, TCGETS, 0x7ffdedcbc7b0)        = -1 ENOTTY (Inappropriate ioctl for device)
lseek(3, 0, SEEK_CUR)                   = 0
lseek(3, 0, SEEK_CUR)                   = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=616, ...}) = 0
read(3, "---\nlayout: post\ntitle: \"ActionB"..., 617) = 616
read(3, "", 1)                          = 0
close(3)                                = 0
write(1, "---\ncategories:\n- android\ncommen"..., 704) = 704
rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f395fc020c0}, {sa_handler=0x555fddb17c10, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f395fc020c0}, 8) = 0
sigaltstack(NULL, {ss_sp=0x555fdf789450, ss_flags=0, ss_size=8192}) = 0
sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, NULL) = 0
exit_group(0)                           = ?
+++ exited with 0 +++

main 手続きにはいると mmap 使っていないのですが、ライブラリ読み込む時に mmap 多用していますね。import するあたりの実装を確認してみると面白いのかどうか。

Linux のしくみ strace の出力

comments powered by Disqus