第1章 Linuxシステム概要
1.1.1 オペレーティングシステムの概念
オペレーティングシステムはコンピュータハードウェアとユーザーの間のインタフェースとして機能する。
1.1.2 オペレーティングシステムの基本機能
- プロセス管理
- メモリ管理
- I/Oデバイス管理
- ファイル管理
1.2.2 Linuxシステムの構成
Linuxは以下の4つの要素から構成される:
- カーネル:システムコールを提供
- シェル:ユーザーインターフェース
- ファイルシステム:ディスク上のファイル管理
- ユーティリティ:エディタや計算機などのツール
第2章 シェル環境
2.1.2 シェルへのアクセス
echo $PATH
/etc/profile
2.2.1 シェルスクリプトの実行
chmod +x script.sh
./script.sh
第3章 C言語導入
3.2.8 演算子
sizeofは変数の型サイズを返し、strlenは文字列の可視内容サイズを返す。
第4章 viエディタ
4.1.2 viの操作モード
- 編集モード
- コマンドモード
- exエスケープモード
第5章 gccコンパイラ
5.1.1 予備処理
gcc -E main.c -o main.i
5.4.1 動的ライブラリの生成
gcc -shared -fPIC -o libmylib.so mylib.c
第6章 makeの使用
6.2.1 基本ルール
target: prerequisites
command
第7章 プログラムデバッグ
7.1.2 エラーコード
#include <errno.h>
perror("Error occurred");
第8章 ライブラリの作成と使用
8.1.2 自作ライブラリ
ar rcs libmy.a file1.o file2.o
第9章 ファイル操作
9.2.3 ファイル読み書き
int fd = open("file.txt", O_RDWR);
read(fd, buffer, sizeof(buffer));
write(fd, buffer, strlen(buffer));
第10章 標準入出力
10.2.1 流の開閉
FILE *fp = fopen("file.txt", "r");
fclose(fp);
第13章 プロセス
13.3.1 forkによるプロセス作成
pid_t pid = fork();
if (pid == 0) {
// 子プロセス
} else {
// 親プロセス
}
第14章 シグナル
14.2.1 シグナルハンドリング
signal(SIGINT, handler);
第15章 パイプによるプロセス間通信
15.3.1 パイプの作成
int pipefd[2];
pipe(pipefd);
第16章 メッセージキュー
16.2.1 メッセージ送信
struct msgbuf {
long mtype;
char mtext[1];
};
msgsnd(msqid, &msg, sizeof(msg), 0);
第17章 共有メモリ
17.2.1 共有メモリの作成
int shmid = shmget(key, size, IPC_CREAT | 0666);
void *shm = shmat(shmid, NULL, 0);
第18章 セマフォ
18.3.1 セマフォ作成
int semid = semget(key, 1, IPC_CREAT | 0666);
union semun u;
u.val = 1;
semctl(semid, 0, SETVAL, u);
第19章 Linuxネットワーク環境
19.2.1 TCP/IPモデル
- ネットワークインターフェース層
- IP層
- トランスポート層
- アプリケーション層
第20章 ソケットプログラミング
20.3.1 ソケット作成
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in server_addr;
bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr));
20.3.4 ソケット関数
listen(sockfd, 5);
int client_fd = accept(sockfd, NULL, NULL);
send(client_fd, buffer, strlen(buffer), 0);
recv(client_fd, buffer, sizeof(buffer), 0);
第21章 総合例:銀行代理サーバー
21.2 実装
void errorlog(char* fmt, ...) {
// ロギングロジック
}
char* handletime() {
// 時間取得ロジック
return time_str;
}