3

スクリプトを使用して、引数としてパスを取り、それを実行するTestという名前の実行可能ファイルを見つける必要があります。私はこの行でこれを行っています:

find -name Test -exec {} path \;

テストでは、execlを取得しました:

    execl("./Test1","Test1",(char*)0);
    perror("Exec failed");
    exit(EXIT_FAILURE);

ここで、Test1Testと同じディレクトリにあります。テスト を「手動で」 実行するとすべてうまくいきますが、上記の行を使用すると、 Execが失敗します。そのようなファイルまたはディレクトリのエラーはありません。

どうしたの ?

4

1 に答える 1

4

findは、実行Testしているディレクトリから実行されますfind。Testのコードを変更できる場合は、Test1の絶対パスを入力します。

execl("/home/myuser/some/path/Test1","Test1",(char*)0);
perror("Exec failed");
exit(EXIT_FAILURE);

-execdirまたは、次の代わりに使用できます-exec

find -name Test -execdir {} path \;

マンページの検索から:

-execdir:-execと同様ですが、指定されたコマンドは、一致したファイルを含むサブディレクトリから実行されます。このサブディレクトリは、通常、検索を開始したディレクトリではありません。

于 2012-07-30T13:47:00.433 に答える