当前位置: 技术问答>linux和unix
一道linux下C语言fork的题
来源: 互联网 发布时间:2016-09-05
本文导语: 初识linux,不太懂这道题,请高手写下过程供分析,最好有注释,不胜感激... linux下编写C程序:在屏幕上显示提示符(prompt),接受从键盘输入,将从键盘输入的命令转化成(生成)新的进程,并且执行(运行)的...
初识linux,不太懂这道题,请高手写下过程供分析,最好有注释,不胜感激...
linux下编写C程序:在屏幕上显示提示符(prompt),接受从键盘输入,将从键盘输入的命令转化成(生成)新的进程,并且执行(运行)的这么一个程序。simplesh
主要是达到这个效果:
$ ./simplesh
PROMPT>
PROMPT> date
Wed May 27 0:30:10 JST 2009
PROMPT> ls
…
我也不是很明白此题的意思
要点:
1.根据下面所示,使用fork,在子进程使用exec系统调用,将子进程置换成输入的命令的进程
int pid;
if ((pid = fork()) == 0) {
/* 子进程的处理*/
} else if (pid >= 1) {
/* 父进程的处理*/
} else {
/* 错误处理*/
}
2.输入的命令行的check,也可利用getchar()
注:此题是翻译过来的,所以语言组织的可能不是很好,见谅
linux下编写C程序:在屏幕上显示提示符(prompt),接受从键盘输入,将从键盘输入的命令转化成(生成)新的进程,并且执行(运行)的这么一个程序。simplesh
主要是达到这个效果:
$ ./simplesh
PROMPT>
PROMPT> date
Wed May 27 0:30:10 JST 2009
PROMPT> ls
…
我也不是很明白此题的意思
要点:
1.根据下面所示,使用fork,在子进程使用exec系统调用,将子进程置换成输入的命令的进程
int pid;
if ((pid = fork()) == 0) {
/* 子进程的处理*/
} else if (pid >= 1) {
/* 父进程的处理*/
} else {
/* 错误处理*/
}
2.输入的命令行的check,也可利用getchar()
注:此题是翻译过来的,所以语言组织的可能不是很好,见谅
|
//这不自己写一个shell么……
#define MAX 100
int pid;
char command[MAX];
int state;
while(1)
{
printf("PROMPT> ");
scanf("%s",command);
if ((pid = fork()) == 0)
{
getopt(...);//处理参数,简单shell的话可以不要参数
state = execvp(command,options);//这里也可以直接写一句system(command);不过不符合题意
}
else
{
if (pid >= 1)
{
wait(pid); //等子进程
}
}
else
{
if(state == -1)
{
printf("command error!n");
}
}
}