Linuxプログラミング入門からマスターまで

第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;
}

タグ: linux シェルスクリプト Cプログラミング GCC Make

6月10日 17:39 投稿