2017-10-28 10 views
-1

私はかなり多くを検索しましたが、まだ答えはありません。私はシェルのように動作し、ユーザに希望のコマンドを要求するプログラムを持っています。そしてexeclpを使ってこの新しいプロセスを開きます。私はコマンドが実行されたかどうかを知る簡単な方法があるか、または受信したコマンドが存在しないかどうかを知りたがっていました。 1とENOENTにerrnoを設定 - 指定見つからなかった場合は、その後のexeclpが返されますexecに与えられたコマンドが存在するかどうかを知るには?

execlp(argv[0], argv[0], (char *)NULL); 
+0

「execlpの戻り値は何ですか?」というGoogleの検索が役に立ちます。投稿する前にあなたの質問について考えることも有益です。あなたが何かをした結果を決して確認しなかった場合、それが成功したかどうかをどのように知っていると思いますか? –

+0

'execl()はおそらく長期間使用する関数ではないことに注意してください。必要な引数の数が分からないので、 'execvp()'を使う必要があります。また、 'execlp()'はコンパイル時に引数の上限を置く必要があります。 –

答えて

1

は、私は、次のコードを使用します。 チェックできるので、

if (errno == ENOENT) 
    printf("Command not found"); 

親プロセスで確認できます。

+0

EPERM(許可なし)またはその他のさまざまなエラーも設定されている可能性があります。しかし、あなたは正しい。それが返っても失敗しました。あなたは値をチェックする必要はありません。それが返ってきたら、失敗しました。 –

関連する問題