タグ

Cに関するtakashi001のブックマーク (4)

  • CとRustで一から作るマイクロカーネルOS

    マイクロカーネルは浪漫に溢れる非常に作りがいのあるソフトウェアです。この記事は,「マイクロカーネルベースのOSの一から作ってIaaSで動かす」ことを目標に作ったマイクロカーネルベースのOS Resea(りーせあ)の設計と実装について軽くまとめた物です。 ソースコードはGitHubにあります。 マイクロカーネルとは Linuxのようなモノリシックカーネルでは色んな機能がカーネル空間で動きますが,マイクロカーネルではユーザプロセスたちが互いに通信しながらOSを作り上げます。プロセス・スレッド・仮想メモリ管理,プロセス間通信,タイマーといった必要最低限の機能だけをカーネルが担います。デバイスドライバやファイルシステムといった残りの機能は,独立したユーザプロセスとして動きます。たとえデバイスドライバが暴走しても他のコンポーネントを壊すことはないのです。マイクロカーネルは信頼性が高く,疎結合で美しい

    CとRustで一から作るマイクロカーネルOS
  • [迷信] scanf ではバッファオーバーランを防げない | 株式会社きじねこ

    株式会社きじねこは大阪のソフトウェア開発会社です。組込み系・業務系のプログラム開発から電子回路の設計までおまかせください。 これも根が深い迷信です。この迷信を根拠に、scanf は使うべきではないという人も大勢います。おそらくこういうことでしょう。 char s[10]; scanf("%s", s); 確かにこれでは、ユーザーが10文字以上入力した時点で未定義の動作を引き起こしてしまいます。しかし、これは書式指定が不適切なために発生する脆弱性であって、scanf の問題ではありません。 バッファオーバーランを回避するには次のようにします。 char s[10]; scanf("%9s", s); これで差し当たっての問題はなくなりました。 さて、熱心な迷信の信者は、何とかして scanf の名誉回復を阻むために、巧みに論点のすり替えを行いながら、scanf を貶めようとすることでしょう。

  • [C/C++]プログラムにコマンドラインからUNIX風のオプションを渡す方法(getopt関数) - Qiita

    int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg; extern int optind, opterr, optopt; getopt関数とはコマンドライン引数のオプション(ハイフン'-'で始まる文字)を解析する関数である。 unistd.hをインクルードして使う。 第1、第2引数は、main関数の引数であるargc,argvをそのまま渡し、第3引数には使用するオプション文字の集合を文字列にして渡す。 返り値で返される値には大きく分けて3つのパターンがある。 optstringで指定したオプション文字が認識された場合、そのオプション文字を返す。 指定していないオプション文字が認識された場合、または、引数が必要なオプションに引数を渡さなかった場合、'?'を返す。 オプショ

    [C/C++]プログラムにコマンドラインからUNIX風のオプションを渡す方法(getopt関数) - Qiita
  • C言語 ファイルを開く - stdio.h - [ fopen ] | 勇躍のゴミ箱

    C言語 目的別 画面への文字出力 画面へ1文字単位で出力 画面へ1行単位で出力 画面へ書式付きで出力 可変個引数を書式付き表示 キーボードから文字入力 入力を1文字単位で取得 入力を1行単位で取得 入力を書式付きで取得 ストリームに1文字戻す 文字列データの入出力 文字列から書式付きで取得 文字列へ書式付きで出力 可変個引数を書式付き出力 ファイルオープン ファイルを開く ファイルを閉じる ファイルオープンのモード 標準入出力について ファイルの読み込み テキストファイルの読込 空白区切りファイルの読込 CSVファイルの読込 バイナリファイルの読込 ファイルの書き込み テキストファイルの書込 CSVファイルの書込 バイナリファイルの書込 可変個引数をファイルへ書込 ファイル関連 ファイル位置の取得 ファイル位置の設定 ファイル位置の取得2 ファイル位置の設定2 ファイル位置を先頭に戻す フ

  • 1