程序功能是在用户态下执行命令的一个实例程序。
父进程打印控制菜单,并且接收命令。
子进程去根据命令处理任务。
父进程继续打印菜单并接收命令。
源码如下:
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <string.h>
int main(int argc, char **argv){
pid_t pid;
char cmd;
char *arg_psa[] = {"ps", "-a", NULL};
char *arg_psx[] = {"ps", "-x", NULL};
while(1){
printf("-------------------------\n");
printf("输入a执行‘ps -a’命令\n");
printf("输入x执行‘ps -x’命令\n");
printf("输入q执行退出\n");
printf("-------------------------\n");
cmd = getchar();
getchar();
if((pid = fork()) < 0){
printf("fork error...\n");
return -1;
}
if(pid == 0){
switch(cmd){
case 'a':
execve("/bin/ps", arg_psa, NULL);
break;
case 'x':
execve("/bin/ps", arg_psx, NULL);
break;
case 'q':
break;
default:
perror("wrong cmd...\n");
break;
}
exit(0);
}
else if(pid > 0){
sleep(1);
if(cmd == 'q')
break;
}
}
while(waitpid(-1, NULL, WNOHANG) > 0);
return 0;
}
具体调用的函数和代码都是很基础的,不做解释。