Linux/2005-S06
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
* 第6回 UNIXプログラミング [#ybe93055]
''【警告】 自分の席の周りにゴミを散乱させて、めちゃくちゃ...
** 目次 [#q73cc2bb]
#contents
** 参考になる情報 [#u17a6b6a]
- C言語の教科書などを持っているなら参考になりますので用意...
- また、「C言語入門」とか「Cプログラミング入門」とか「Cの...
** とりあえずコンパイル [#fd929214]
+ みなさんがインストールしたソフトウェアの中には、gccとい...
gcc ソースファイル名.c -o 実行ファイル名
+ まず、これで「Hello, world!」と表示するプログラムを作っ...
+ コンパイル結果(たとえばa.out)を実行するには、以下のよ...
./実行ファイル名
-- 工学部のサーバでは「./」は不要だったと思いますが、みな...
** 課題(C言語プログラムの作成) [#j6a9bc11]
*** 提出方法 [#l5a61ce4]
できたソースファイルは、以下のページから自分の番号のペー...
- [[Linux/提出]]
まず試しに、上で作成した「Hello world!」と表示するプログ...
*** 課題1. ウォーミングアップ [#o783763b]
キーボードから10個の整数を読み込んだ後、平均以上の数値と...
*** 課題2. ファイルの読み込み [#ld261455]
前回作成したLaTeXファイルの文書ファイルを開き、中身を読み...
*** 課題3. 自作コマンドの作成(後回しにしたほうがいいかも...
コマンドラインで与えられた文字列を、標準ライブラリ関数 to...
./upecho I am a boy.
I AM A BOY.
>【コマンドライン引数】 プログラム実行時のコマンドライン...
int main(int argc, char *argv[]);
このargcに、コマンドライン引数の個数、argvにそれぞれの引...
int main(int argc, char *argv[])
{
int i;
for (i = 0; i < argc; i++)
printf("%s\n", argv[i]);
}
*** 課題4. ファイル名のコマンド引数 [#yfdd4bdb]
整数が1つ書き込まれたファイルをあらかじめ作っておく。コマ...
*** 課題5. カウンタプログラム [#t98fdff9]
以下に示すような動作をするプログラム「counter.c」を作成し...
+ 読み込みモードで「counter.dat」というファイルを開く。(...
+ そのファイルから、整数を1つ読み込む。(fscanf)
+ いったんファイルを閉じる。(fclose)
+ 読み込んだ整数に1を加える。
+ 整数の値を、画面に表示する。
+ 今度は、書き込みモードでファイルを開く。(fopen)
+ 結果をファイル「counter.dat」に書き戻す。(fprintf)
+ ファイルを閉じる。(fclose)
プログラムをコンパイルして動かし、きちんと動作することを...
./counter
1
./conter
2
...以下続く...
----
CENTER:★ ★ ★ 目 標 ★ ★ ★
----
*** 課題6. コマンドオプションの解析(上級) [#z1866e4f]
課題5.のカウンタプログラムを改良して、コマンドオプション...
- 引数に「-n」がある場合には、カウントアップせずに現在の...
- 引数に「-k」(小文字)がある場合には結果を''漢字''で表...
- 引数に「-K」(大文字)がある場合には''漢数字''で表示す...
- 引数に「-数字」がある場合には「0」(ゼロ)を補ってその...
./counter -k
一五
./counter -n
15
./counter -5
00016
./counter -K
十七
./counter -n -k
一七
./counter -k -5
〇〇〇一八
*** 課題7. システムコールによる入出力(上級) [#x96873b4]
課題2と同様なプログラムを、UNIXのシステムコール open, clo...
- fopen → open
-- http://www.linux.or.jp/JM/html/LDP_man-pages/man2/open...
- fclose → close
-- http://www.linux.or.jp/JM/html/LDP_man-pages/man2/clos...
- getc → read
-- http://www.lnux.or.jp/JM/html/LDP_man-pages/man2/read....
- putchar → write(出力先のファイルディスクリプタは1)
-- http://www.linux.or.jp/JM/html/LDP_man-pages/man2/writ...
- 参考
-- http://www.kaimei.org/note/book_in/sys_call.html
*** 課題8. system関数による子プロセスの起動(上級) [#w1f...
以下に示すような動作をするプログラムを作成しなさい。
+ まず、画面に次のようなガイドを表示して、入力を読み込む。
コピー元ファイル名? hogehoge.c
コピー先ファイル名? fugafuga.c
+ すると、入力された文字列(この例では「hogehoge.c」と「f...
+ その結果、次のコマンドを実行したのと同じ結果が得られる。
cp hogehoge.c fugafuga.c
- http://www.linux.or.jp/JM/html/LDP_man-pages/man3/syste...
*** 課題9. popen関数による子プロセスの起動(上級) [#o987...
sin(0°)からsin(360°)までの値を、1°刻みで画面に表示するプ...
- http://www.linux.or.jp/JM/html/LDP_man-pages/man3/popen...
- http://www.linux.or.jp/JM/html/LDP_man-pages/man3/sin.3...
*** 課題10. システムの環境変数の取得(上級) [#n7f97d5e]
UNIXの環境変数をすべて取得して表示するプログラムを作成し...
printenv
- http://www.linux.or.jp/JM/html/LDP_man-pages/man3/geten...
** 第4回レポート [#xadd1ba1]
上の課題をできるところまでやって、提出してください。
- [[Linux/提出]]
早々に全部終わってしまった人は、私に申し出てください。早...
終了行:
* 第6回 UNIXプログラミング [#ybe93055]
''【警告】 自分の席の周りにゴミを散乱させて、めちゃくちゃ...
** 目次 [#q73cc2bb]
#contents
** 参考になる情報 [#u17a6b6a]
- C言語の教科書などを持っているなら参考になりますので用意...
- また、「C言語入門」とか「Cプログラミング入門」とか「Cの...
** とりあえずコンパイル [#fd929214]
+ みなさんがインストールしたソフトウェアの中には、gccとい...
gcc ソースファイル名.c -o 実行ファイル名
+ まず、これで「Hello, world!」と表示するプログラムを作っ...
+ コンパイル結果(たとえばa.out)を実行するには、以下のよ...
./実行ファイル名
-- 工学部のサーバでは「./」は不要だったと思いますが、みな...
** 課題(C言語プログラムの作成) [#j6a9bc11]
*** 提出方法 [#l5a61ce4]
できたソースファイルは、以下のページから自分の番号のペー...
- [[Linux/提出]]
まず試しに、上で作成した「Hello world!」と表示するプログ...
*** 課題1. ウォーミングアップ [#o783763b]
キーボードから10個の整数を読み込んだ後、平均以上の数値と...
*** 課題2. ファイルの読み込み [#ld261455]
前回作成したLaTeXファイルの文書ファイルを開き、中身を読み...
*** 課題3. 自作コマンドの作成(後回しにしたほうがいいかも...
コマンドラインで与えられた文字列を、標準ライブラリ関数 to...
./upecho I am a boy.
I AM A BOY.
>【コマンドライン引数】 プログラム実行時のコマンドライン...
int main(int argc, char *argv[]);
このargcに、コマンドライン引数の個数、argvにそれぞれの引...
int main(int argc, char *argv[])
{
int i;
for (i = 0; i < argc; i++)
printf("%s\n", argv[i]);
}
*** 課題4. ファイル名のコマンド引数 [#yfdd4bdb]
整数が1つ書き込まれたファイルをあらかじめ作っておく。コマ...
*** 課題5. カウンタプログラム [#t98fdff9]
以下に示すような動作をするプログラム「counter.c」を作成し...
+ 読み込みモードで「counter.dat」というファイルを開く。(...
+ そのファイルから、整数を1つ読み込む。(fscanf)
+ いったんファイルを閉じる。(fclose)
+ 読み込んだ整数に1を加える。
+ 整数の値を、画面に表示する。
+ 今度は、書き込みモードでファイルを開く。(fopen)
+ 結果をファイル「counter.dat」に書き戻す。(fprintf)
+ ファイルを閉じる。(fclose)
プログラムをコンパイルして動かし、きちんと動作することを...
./counter
1
./conter
2
...以下続く...
----
CENTER:★ ★ ★ 目 標 ★ ★ ★
----
*** 課題6. コマンドオプションの解析(上級) [#z1866e4f]
課題5.のカウンタプログラムを改良して、コマンドオプション...
- 引数に「-n」がある場合には、カウントアップせずに現在の...
- 引数に「-k」(小文字)がある場合には結果を''漢字''で表...
- 引数に「-K」(大文字)がある場合には''漢数字''で表示す...
- 引数に「-数字」がある場合には「0」(ゼロ)を補ってその...
./counter -k
一五
./counter -n
15
./counter -5
00016
./counter -K
十七
./counter -n -k
一七
./counter -k -5
〇〇〇一八
*** 課題7. システムコールによる入出力(上級) [#x96873b4]
課題2と同様なプログラムを、UNIXのシステムコール open, clo...
- fopen → open
-- http://www.linux.or.jp/JM/html/LDP_man-pages/man2/open...
- fclose → close
-- http://www.linux.or.jp/JM/html/LDP_man-pages/man2/clos...
- getc → read
-- http://www.lnux.or.jp/JM/html/LDP_man-pages/man2/read....
- putchar → write(出力先のファイルディスクリプタは1)
-- http://www.linux.or.jp/JM/html/LDP_man-pages/man2/writ...
- 参考
-- http://www.kaimei.org/note/book_in/sys_call.html
*** 課題8. system関数による子プロセスの起動(上級) [#w1f...
以下に示すような動作をするプログラムを作成しなさい。
+ まず、画面に次のようなガイドを表示して、入力を読み込む。
コピー元ファイル名? hogehoge.c
コピー先ファイル名? fugafuga.c
+ すると、入力された文字列(この例では「hogehoge.c」と「f...
+ その結果、次のコマンドを実行したのと同じ結果が得られる。
cp hogehoge.c fugafuga.c
- http://www.linux.or.jp/JM/html/LDP_man-pages/man3/syste...
*** 課題9. popen関数による子プロセスの起動(上級) [#o987...
sin(0°)からsin(360°)までの値を、1°刻みで画面に表示するプ...
- http://www.linux.or.jp/JM/html/LDP_man-pages/man3/popen...
- http://www.linux.or.jp/JM/html/LDP_man-pages/man3/sin.3...
*** 課題10. システムの環境変数の取得(上級) [#n7f97d5e]
UNIXの環境変数をすべて取得して表示するプログラムを作成し...
printenv
- http://www.linux.or.jp/JM/html/LDP_man-pages/man3/geten...
** 第4回レポート [#xadd1ba1]
上の課題をできるところまでやって、提出してください。
- [[Linux/提出]]
早々に全部終わってしまった人は、私に申し出てください。早...
ページ名: