- 399 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 03:36:41 ]
- >>398
(3) 原因は、cmd->args[i] の最後の要素に NULL が入っていないこと 。 simple_accept_cmd() 内で if(strp != NULL){ cmd_a->args[i] = strp; cmd_a->num_args++; } とやって cmd_a->args[i] には NULL が入らないようになってるけど、 cmd_a->args[i] = strp; if(strp != NULL){ cmd_a->num_args++; } と順序変えてやればおk (5) コマンドの status を見てやればエラー処理できるでしょ エラーの詳細知りたかったら、子プロセスでないとわからないから execvp(cmd->args[0], cmd->args); printf("Command error:%s\n", strerror(errno)); とでもすれば、strerror で得られる原因が表示される。ファイルが見つからない場合だけ 対処したいんだったら、execvp 直後の errno の値で場合分けを行う。
|

|