第6回 UNIXプログラミング †【警告】 自分の席の周りにゴミを散乱させて、めちゃくちゃ汚くして帰っていった者がいますが、常識的なマナーに照らして到底許されることではないです。当然減点しますし、繰り返せば点がなくなります。 目次 †参考になる情報 †
とりあえずコンパイル †
課題(C言語プログラムの作成) †提出方法 †できたソースファイルは、以下のページから自分の番号のページを開いてアップロードしてください。C言語のソースファイルのみを提出すればいいです(a.outはいらない)。ファイルはいくつでも添付できます。紛らわしくないファイル名をつけてからアップロードしてください。 まず試しに、上で作成した「Hello world!」と表示するプログラムを、アップロードしてみてください。 課題1. ウォーミングアップ †キーボードから10個の整数を読み込んだ後、平均以上の数値と平均未満の数値に分けて表示するプログラムを作りなさい。 課題2. ファイルの読み込み †前回作成したLaTeXファイルの文書ファイルを開き、中身を読み出して、画面に表示するプログラムを作成しなさい。標準ライブラリ関数 fopen, fclose, getc, putchar を用いなさい。 課題3. 自作コマンドの作成(後回しにしたほうがいいかも…) †コマンドラインで与えられた文字列を、標準ライブラリ関数 toupper を用いてすべて大文字に変換した後、画面に表示するプログラムを作成しなさい。(全部大文字に変換するecho) ./upecho I am a boy. I AM A BOY.
課題4. ファイル名のコマンド引数 †整数が1つ書き込まれたファイルをあらかじめ作っておく。コマンドの引数にそのファイル名を与えてコマンドラインから起動すると、引数で指定したファイルから整数を読み出して画面に表示するプログラムを作成しなさい. 課題5. カウンタプログラム †以下に示すような動作をするプログラム「counter.c」を作成しなさい。その際、カッコ内の指定の関数を使用すること。
プログラムをコンパイルして動かし、きちんと動作することを確認してください。このプログラムは先の回で利用するので(たぶん)、分かるように保存しておいてください。 ./counter 1 ./conter 2 ...以下続く... ★ ★ ★ 目 標 ★ ★ ★
課題6. コマンドオプションの解析(上級) †課題5.のカウンタプログラムを改良して、コマンドオプションによって作動する以下のような機能を付け加えなさい。できるところまで機能を付け加えなさい。
./counter -k 一五 ./counter -n 15 ./counter -5 00016 ./counter -K 十七 ./counter -n -k 一七 ./counter -k -5 〇〇〇一八 課題7. システムコールによる入出力(上級) †課題2と同様なプログラムを、UNIXのシステムコール open, close, read, write を用いて作成しなさい。
課題8. system関数による子プロセスの起動(上級) †以下に示すような動作をするプログラムを作成しなさい。
課題9. popen関数による子プロセスの起動(上級) †sin(0°)からsin(360°)までの値を、1°刻みで画面に表示するプログラムを作成しなさい。そのとき、出力を「popen」関数で起動した「more」コマンドに渡すことで1画面ずつ表示するようにしなさい。popen で more コマンドを起動し、そのファイルポインタに fprintf で出力を書き込めばよい。
課題10. システムの環境変数の取得(上級) †UNIXの環境変数をすべて取得して表示するプログラムを作成しなさい。以下のコマンドと同じ出力結果になればよい。環境変数とは何か調べなさい。 printenv 第4回レポート †上の課題をできるところまでやって、提出してください。 早々に全部終わってしまった人は、私に申し出てください。早すぎる場合には、課題を作ります(苦笑)。 |