我必须将这一系列命令传递给流程strtok
,然后使用exec
执行。
命令是:
mkdir prova
rm prova/test
touch prova/test
ls
cp prova/test prova/test2
到目前为止我所做的是:
char *token, *cmd, *params, path[30] = "/bin/";
token = strtok(m_cmd.cmd, " ");
cmd = token;
while(token != NULL){
//printf("[server] Token: %s ", token);
params = token;
token = strtok(NULL, "");
}
/* other code */
execl(path, cmd, params, (char*)(0));
我的问题是两个:
1)当我得到ls
时如何在没有参数的情况下执行execl
?
2)当我尝试执行cp prova/test prova/test2
时,它会将prova/test prova/test2
作为一个参数而不是两个参数。
我做错了什么?
答案 0 :(得分:0)
1)根据手册页app.php
,第一个参数应该是命令的名称(argv [0]),而不是第一个参数(argv [1])。
2)是的,显然。在exec(3)
循环中,您覆盖while()
和token
,因此,令牌将成为第一个参数并且第二个参数。