次の方法で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 *関数のmanページを見ました
execl(const char *path, const char *arg, ...);
execv(const char *path, char *const argv[]);
したがって、最初の引数は同じように見えますが、
execv
の2番目の引数はchar *const argv[]
同じ結果を得るには、execv
関数で何を変更する必要がありますか?
私の主な関数引数は次のようになっています。
main(int argc,char * argv[])
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);
}