
我正在嘗試製作一個程序,透過以下方式將 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[]);
所以第一個論點似乎是相同的,
第二個論點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);
}