2014年度情報科学実験1システムコールプログラミングのページ

資料および課題 第3回

プログラム例

  1. 入出力システムコールを使ったプログラムの例(2)
    1. 標準入力からの入力を、コマンドライン引数で名前(正確にはパス)を指定したファイルに出力するプログラム。ただし、指定した名前のファイルが存在しなければ作成し、存在すれば上書きする。
    2. 標準入力からの入力を、コマンドライン引数で名前(正確にはパス)を指定したファイルに出力するプログラム。ただし、指定した名前のファイルが存在しなければ作成し、存在すればファイル末尾に追記する。
    3. 標準入力からの入力を、コマンドライン引数で名前(正確にはパス)を指定したファイルに出力するプログラム。ただし、指定した名前のファイルが存在しなければ作成し、存在すればエラーとする。
  2. アクセス権
    1. 指定されたアクセス権で空ファイルを作成するプログラム
      注意1
      somen.c の方法は、ファイルを作成した後でアクセス権を緩める方向に変更するので、セキュリティの問題は生じない。 緩いアクセス権で作成してから厳しいアクセス権に変更すると、open()の後でfchmod()の前のわずかの時間に、他のプロセスがファイルに予期せぬアクセスをする危険が生じる。
      注意2
      somen.c で、アクセス権の変更を chmod()で行うと、セキュリティの問題が生じる。 open()の後でchmod()の前のわずかの時間に、他のプロセスがファイル名を変更する危険がある。

課題

    1. mikan.ciyokan.ckinkan.c の機能を併せ持つプログラムを書け。オプション -a があれば iyokan.c と同様の動作をし、オプション -c があれば kinkan.c と同様の動作をし、どちらもなければ mikan.c と同様の動作をするようにせよ。両方が同時に指定されていればエラーとせよ。
    1. コマンドラインの第三引数で指定されたパス名のファイルを、第一引数の八進数で指定されたアクセス権で作成し、第二引数で指定された文字列を書き込むプログラムを書け。 該当のファイル名のファイルがすでに存在する時は、書き込みは行わずエラー終了する。 入力と出力にはシステムコールを直接使用すること。