编写一个命令处理程序,能处理max(m,n)、min(m,n)和 average(m,n,l) 这几个命令。(要求使用exec函数族实现)
时间: 2024-03-11 07:48:18 浏览: 70
以下是一个使用exec函数族实现命令处理程序的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main() {
char command[100];
int m, n, l;
while (1) {
printf("Enter command: ");
fgets(command, 100, stdin);
// 去掉换行符
command[strcspn(command, "\n")] = '\0';
if (strncmp(command, "max", 3) == 0) {
printf("Enter m and n: ");
scanf("%d %d", &m, &n);
char arg1[10], arg2[10];
sprintf(arg1, "%d", m);
sprintf(arg2, "%d", n);
execlp("max", "max", arg1, arg2, NULL);
}
else if (strncmp(command, "min", 3) == 0) {
printf("Enter m and n: ");
scanf("%d %d", &m, &n);
char arg1[10], arg2[10];
sprintf(arg1, "%d", m);
sprintf(arg2, "%d", n);
execlp("min", "min", arg1, arg2, NULL);
}
else if (strncmp(command, "average", 7) == 0) {
printf("Enter m, n and l: ");
scanf("%d %d %d", &m, &n, &l);
char arg1[10], arg2[10], arg3[10];
sprintf(arg1, "%d", m);
sprintf(arg2, "%d", n);
sprintf(arg3, "%d", l);
execlp("average", "average", arg1, arg2, arg3, NULL);
}
else {
printf("Invalid command!\n");
}
// 清空输入缓冲区
while (getchar() != '\n');
}
return 0;
}
```
这个程序会不断提示用户输入命令,接收用户输入的命令,并根据命令调用相应的程序。例如,当用户输入“max”命令时,程序会提示用户输入m和n,然后使用execlp函数调用max程序,并将m和n作为参数传递给max程序。其他命令的处理方式类似。
阅读全文