![execv 함수를 성공적으로 호출하는 방법은 무엇입니까? [폐쇄]](https://linux55.com/image/83795/execv%20%ED%95%A8%EC%88%98%EB%A5%BC%20%EC%84%B1%EA%B3%B5%EC%A0%81%EC%9C%BC%EB%A1%9C%20%ED%98%B8%EC%B6%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
다음을 통해 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);
}