Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

ふつうのLinuxプログラミングをやってみる その1

有名な本らしいので買ってみました

ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道
ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道

ふつうのLinuxプログラミングをやってみる その1
https://qiita.com/uturned0/items/b9ae846f2aff5865c074
ふつうのLinuxプログラミングをやってみる その2
https://qiita.com/uturned0/items/56beac990cdd6f1059ed
ふつうのLinuxプログラミングをやってみる その3
https://qiita.com/uturned0/items/675092da8aa89c4b1ff0
その4
https://qiita.com/uturned0/items/8f5765cfc0f0be8a1981
その5
https://qiita.com/uturned0/items/ab97deb489c994a836da
その6
https://qiita.com/uturned0/items/b7df48e87ae9170f3698
その7
https://qiita.com/uturned0/items/263151cf7c83bff7fac1


ただのメモ書きです

chapter 1

引数を使う

#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
  int i;

  printf("argc=%d\n",argc);
  for (i=0;i < argc; i++) {
    printf("argv[%d]=%s \n", i, argv[i]);
}
  exit(0);
}

result

$ gcc -Wall -O2 args.c  && ./a.out a b "c d"
argc=4
argv[0]=./a.out
argv[1]=a
argv[2]=b
argv[3]=c d

option

-Wall デバッグ情報をいい感じに出す
-O2 コンパイルが早くなるらしい。 -O3 が一番早いんだけどおすすめじゃないらしい

manの見方

man printf だと普通はコマンド(ユーザコマンド)の printf が出てくる
image.png

man 3 printf すると、ライブラリ関数の printf が出てくる。同じ名前だが違うもの
image.png

linuxのmanはcの関数まで引くことができるのだった。man strlen すると strlen(3) がヒットする。user commandではないので、bashにstrlenと打っても使えない。あくまで c-langの中で記述するもの。

linux man のセクション分け

1   実行プログラム または シェルコマンド
2   システムコール(カーネルが提供している関数)
3   ライブラリーコール(プログラムライブラリ内の関数)
4   特殊ファイル(通常 /dev にあるファイル)
5   ファイルフォーマット  規約(例 /etc/passwd
6   ゲーム
7   その他(マクロパッケージや規約)
8   システム管理コマンド(通常はrootのみが使う)
9   カーネルルーチン [非標準]

https://laboradian.com/basic-usage-of-man-command-on-linux/

man 5 passwd を打つと、passwd コマンドじゃなくて /etc/passwd ファイルの説明が出る。ほえ〜〜〜

manを日本語にする

英語読める方ではありますがこの件モチベ低いので日本語でやろうかと。

sudo yum install man-pages-ja
export LANG=ja_JP.utf8
man 5 passwd

日本語になりました。これは勉強になりそう。man読めってのはこういうことなんだろうな
image.png

chapter 1 おわり


この本を読みながらやってます

ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道
ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away