execv関数を正常に呼び出すには? [閉鎖]

execv関数を正常に呼び出すには? [閉鎖]

次のように、file1をfile2にコピーするプログラムを作成しようとしています。

cp -i -p file1 file2

次に、実行可能コピーを呼び出します。

copy file1 file2

最初のコマンド(-iと-p)と同じことを行います。

次の方法を使用してこれを実行できました。execl

char const *copy[] = {"/bin/cp","cp","-p","-i",0};

execl(copy[0],copy[1],copy[2],copy[3],argv[1],argv[2],copy[4]);

ところで今はこれをしたい。execv

exec* 機能のマニュアルページを見ました。

execl(const char *path, const char *arg, ...);

execv(const char *path, char *const argv[]);

したがって、最初の主張は同じようです。

2番目の主張execvは何ですか?char *const argv[]

execv同じ結果を得るには、関数で何を変更する必要がありますか?

私の主な機能パラメータは次のとおりです。

main(int argc,char * argv[])

ベストアンサー1

copy配列と関数呼び出しを変更してください。以下は最小限の例です。

#include <unistd.h>

int main(int arcg, char *argv[])
{
    char *const args[] = {"cp","-p","-i", argv[1], argv[2], 0}; 
    execv("/bin/cp", args);
}

おすすめ記事