作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<分区>
你好,我需要使用 execvp()
运行一个程序,问题是我得到一个 sting 作为参数我似乎无法匹配命令的语法以正常工作这里是代码:
int executeUserCommand(char *command, int runInBackground) {
pid_t pid;
int status;
pid = fork();
if (pid == 0) {
//child process
execvp(command, &command);
exit(1);
} else {
//perent
if (!runInBackground) {
waitpid(pid, &status, 0);
return WEXITSTATUS(status);
}
}
return 0;
}
我正在使用 executeUserCommand("./test 1 2 3", 0)
问题是程序正在运行但没有参数..问题是什么以及我如何解决它?
编辑:我添加了两个功能来帮助我进行拆分,但它仍然无法正常工作。
char *getCommand(char *commandAndArguments) {
char command[256];
memset(command,0,MAX_LENGTH_OF_LINE);
sscanf(commandAndArguments,"%s ", command);
//strncpy(command, commandAndArguments, command - commandAndArguments);
return command;
}
void commandToArrguments(char *stringToSplit) {
const char *p = stringToSplit;
int n, len;
int i = 0;
for (n = 0; n < MAX_NUMBER_OF_COMMANDS; n++) {
for (len=0; len < MAX_LENGTH_OF_LINE-1; len++) {
if (p[0] == '\0') {
break;
}
if (p[0] == ' ') {
p += 1;
break;
}
commandArgumnets[n][len] = *p;
p++;
}
commandArgumnets[n][len] = '\0';
}
}
int executeUserCommand(char *command, int runInBackground) {
pid_t pid;
int status;
pid = fork();
char *commandToExecute = getCommand(command);
if (pid == 0) {
//child process
execvp(commandToExecute, commandArgumnets);
exit(1);
} else {
//perent
if (!runInBackground) {
waitpid(pid, &status, 0);
return WEXITSTATUS(status);
}
}
return 0;
commandArgumnets
被定义为全局的,但仍然不工作
我是一名优秀的程序员,十分优秀!