Command-Line

如何成功呼叫 execv 函式?

  • February 17, 2016

我正在嘗試製作一個程序,它將通過以下方式將 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[])

更改您的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);
}

引用自:https://unix.stackexchange.com/questions/263912