您的位置:首页 > 运维架构 > Linux

linux课本第81页的程序

2015-10-17 12:36 561 查看
程序功能是在用户态下执行命令的一个实例程序。

父进程打印控制菜单,并且接收命令。

子进程去根据命令处理任务。

父进程继续打印菜单并接收命令。

源码如下:

#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;
}


具体调用的函数和代码都是很基础的,不做解释。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: