- 387 名前:デフォルトの名無しさん [2008/11/07(金) 23:06:11 ]
- [1] 授業単元:Linuxプログラミング
[2] 問題文(含コード&リンク): 途中までつくって、コンパイルも出来るようになったのですが、動作が中途半端です。fork(), execvp, waitあたりが理解出来ていないからどこか がおかしいと思うのですが、見て下さい。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7966.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7964.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7965.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 4.1.2 [3.3] 言語: C [4] 期限: 今日中 [5] その他の制限: やろうとしていること: 実行すると、testプロンプトが表示されるので、好きなコマンドを実行すると、結果を表示する。->例えば、test> ls -l -a /tmp/temp.txt exitを入力するまで繰り返し何度でもコマンドを実行出来る。 質問(1)なぜか最初の一回目はexecvpによるコマンド実行結果が表示されません。二回目からは正常に動作するのですが。。 質問(2)exitを入力するまでループにしているのですが、一回入力させれば終了したいのに、複数回コマンドを実行した場合は、exitも複数回入力しなければ 抜けられなくなってしまいました。 質問(3)二回目のコマンド実行時、一回目よりも短いオプションで実行するとなぜか「ls: p/temp.txt: ファイルかディレクトリが見つかりません」とエラーになります。 argv[i]に格納した文字列が途中で切れてしまっているように思われます。 質問(4)存在しないコマンドを入力するとエラーメッセージを出したいのですが、どうすればよいでしょうか。 質問(5)ソース中にシグナルキャッチャーの箇所がありますが、どのように使えばいいのかわかりません。不明確な質問ですが、この文脈で使い方がわかる 場合は教えて下さい。以上、長くなりましたが宜しくお願いします。
|

|