次のように、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);
}