다음을 통해 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);
}