Linuxプログラミング

Linuxプログラミングの初歩について、今日のまとめ


【スレッド】


#include
pthread_create(ハンドル, 属性, スレッド関数, 引数) …スレッドを生成する
pthread_join(ハンドル, 戻り値を取得するポインタ) …スレッドの終了を待つ
pthread_exit(戻り値) …自スレッドを終了する
pthread_setconcurrency(並列度) …並列実行の数を設定する
pthread_mutex_init(ミューテックス, 属性) …ミューテックスを初期化する
pthread_mutex_lock(ミューテックス) …ミューテックスをロックする
pthread_mutex_unlock(ミューテックス) …ミューテックスをアンロックする

【デバイス低水準入出力】


#include
#include
#include
#include
#include
ハンドル = open(ファイル名, モード) …デバイス(ファイル)を開く
成否 = close(ハンドル) …デバイス(ファイル)を閉じる
読めたサイズ = read(ハンドル, バッファ, 読むサイズ) …デバイス(ファイル)から読む
書けたサイズ = write(ハンドル, バッファ, 書くサイズ) …デバイス(ファイル)へ書く
成否 = ioctl(ハンドル, リクエスト,...) …デバイス(ファイル)を制御する
ioctl(ハンドル, EVIOCGRAB, 1) …デバイスを占有する(標準ドライバに処理させない)
ioctl(ハンドル, EVIOCGRAB, 0) …元に戻す
フレームバッファバイスの情報を取得する
ioctl(ハンドル, FBIOGET_FSCREENINFO, 取得するポインタ ) …固定スクリーン情報
ioctl(ハンドル, FBIOGET_VSCREENINFO, 取得するポインタ ) …変動スクリーン情報

【タイマとシグナル】


標準シグナル
SIGINT キーボードからの割り込み
SIGQUIT キーボードによる中止
SIGILL 不正な命令
SIGABRT 中断 (Abort) シグナル
SIGFPE 浮動小数点例外
SIGKILL Kill シグナル
SIGSEGV 不正なメモリ参照
SIGPIPE パイプ破壊: 読み手の無いパイプへの書き出し
SIGALRM タイマーシグナル
SIGTERM 終了シグナル
SIGUSR1 ユーザ定義シグナル 1
SIGUSR2 ユーザ定義シグナル 2
SIGCHLD 子プロセスの一時停止または終了
SIGCONT 一時停止からの再開
SIGSTOP プロセスの一時停止
SIGTSTP 端末 (tty) より入力された一時停止
SIGTTIN バックグランドプロセスの tty 入力
SIGTTOU バックグランドプロセスの tty 出力

クロック
CLOCK_REALTIME システムのリアルタイムクロック
CLOCK_MONOTONIC 変更不可能なシステムの経過時間
CLOCK_PROCESS_CPUTIME_ID プロセスごとのCPU時間
CLOCK_THREAD_CPUTIME_ID スレッドごとのCPU時間

#include
#include

// シグナル動作構造体
struct sigaction シグナル動作;
// 割り込みハンドラ関数の設定
シグナル動作.sa_handler = ハンドラ関数;
// フラグのクリア
シグナル動作.sa_flags = 0;
// シグナルのマスクをクリア
sigemptyset(&シグナル動作.sa_mask);
// シグナル動作を設定
if(sigaction(SIGALRM, &シグナル動作 NULL) == -1){ エラー処理 }

// タイマID
timer_t タイマID;
// 周期タイマ構造体
struct itimerspec 周期タイマ設定;
// 初回の割り込みまでの待ち時間設定 (この例は1秒)
周期タイマ設定.it_interval.tv_sec = 1;
周期タイマ設定.it_interval.tv_nsec = 0;
// 割り込みの周期設定 (この例は1秒)
周期タイマ設定.it_value.tv_sec = 1;
周期タイマ設定.it_value.tv_nsec = 0;
// タイマの生成
if(timer_create(CLOCK_REALTIME, NULL, &タイマID) == -1){ エラー処理 }
// タイマの設定
if(timer_settime(タイマID, 0, &周期タイマ設定, NULL) == -1){ エラー処理 }

// タイマの削除
timer_delete(タイマID)

【その他】


#include
//コマンドをシェルに渡して実行させる
system(コマンド文字列);

#include
// デバイスアドレス空間マッピングし、開始アドレスを取得する
ポインタ = mmap(開始アドレス, サイズ, 保護モード, フラグ, ハンドル, オフセット);
// アンマップする
munmap(開始アドレス, サイズ);

#include
// 標準エラー出力に説明メッセージとシステムエラーメッセージを出力する
perror(説明メッセージ);

#include
// 本来はファイルの状態待ちだが、us単位の待ちに使える。
(sleep関数は秒単位)select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, 時間設定);

#include
srand(種); // 乱数の種を設定する
乱数 = rand(); // 乱数を生成する [0, RAND_MAX] の範囲の整数

#include …キーボード/ボタンなどの定数・構造体定義
#includeフレームバッファ関係の定数・構造体定義
#includeファイルシステム関係の定数・構造体定義