我的可执行文件名为 hfile = HttpOpenRequest(hLastConnection, 'GET', '/path', NULL, NULL, NULL, INTERNET_FLAG_RELOAD | INTERNET_FLAG_KEEP_CONNECTION, 0);
HttpAddRequestHeaders(hfile,'Accept: foobar', 14, HTTP_ADDREQ_FLAG_REPLACE or HTTP_ADDREQ_FLAG_ADD);
。
执行时我想要
copy
基本上做
copy file1 file2
我希望使用cp -i -p file1 file2
函数来完成此任务。
现在我对execl
有了更多的专业知识,可以自动搜索命令的路径。
所以我可以做以下事情:
execvp
但是,我怎样才能使用char *cmd[] = {"cp","-ip",0}
execvp(cmd[0],cmd);
来指定execvp
哪个是file1而argv[1]
是file2
答案 0 :(得分:1)
这是execl函数的原型:
int execl(const char *path, const char *arg, ...
/* (char *) NULL */);
因此它接受二进制路径的参数,然后是参数。 您要使用的二进制文件是cp,因此,路径将是/ bin / cp(您可以使用 whereis cp 来查找二进制位置)。
然后你必须传递cp所需的参数。 像这样的例子:
int main(int argc, char **argv)
{
execl("/bin/cp", "-i", "-p", argv[1], argv[2], (char *)0);
}
要获得cp交互式提示,您必须从shell调用cp。要模拟这个,你可以用sh调用你的命令。您可以直接使用system函数,或使用execl系列中的函数。
int main(int argc, char **argv)
{
char *cmd;
if (asprintf(&cmd, "cp -ip %s %s", argv[1], argv[2]) == -1)
return (1);
execlp("sh", "sh", "-c" , cmd, (char *)0);
}