我正在制作一个自定义的C shell,当前正在使用空格拆分命令:
(我目前正在做的简化示例)
char *buf[20];
char *tempVar;
tempvar = strtok(buf, " ");
例如:
sleep 5
将被分为sleep
和5
。
但是,我也想拆分为&
(以创建后台进程)。因此sleep 5&
将被分为3:sleep
,5
和&
。
任何帮助将不胜感激。
答案 0 :(得分:0)
您可以使用特定的方法来提取数字,或者只是将字符&
放下。我在这里有一个想法,也许这不是最好的解决方案。希望进一步交流。
char buf[] = "sleep 5&";
char *cmd;
char *arg;
char *tmpArg;
int count = 0;
while (true) {
if (0 == count) {
cmd = strtok(buf, " ");
arg = strtok(NULL, " ");
} else {
cmd = strtok(NULL, " ");
arg = strtok(NULL, " ");
}
printf("%s\n", cmd);
if (NULL != cmd) {
if (strcmp("sleep", cmd) == 0) {
if (arg != NULL) {
// 1. introduce a method to extract digit or
// 2. using `&` to split the arg again, the shortcoming is that we omit character `&` here.
for (int i = 0; i < 2; ++i) {
if (0 == i) {
tmpArg = strtok(arg, "&");
} else {
tmpArg = strtok(NULL, "&");
}
printf("%s\n", tmpArg);
}
}
}
} else {
break;
}
++count;
}