
다음과 같은 방법으로 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);
}