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[]);

따라서 첫 번째 주장은 같은 것 같습니다.

두 번째 주장 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);
}

관련 정보