c语言中用fork()和excel()实现控制台的指令

部分代码如下:在输入Q的时候打印goodbye退出,否则运行控制台指令或者运行文件范例:输入:R/bin/ls输出:1.out1.c输入:Rclock输出:(运行cloc... 部分代码如下:在输入Q的时候打印goodbye退出,否则运行控制台指令或者运行文件
范例:输入:R /bin/ls
输出:1.out 1.c
输入:R clock
输出:(运行clock)
输入:/bin/abc(不存在)
输出:abc未能找到
输入:Q
输出:Goodbye
返回
请问应该怎么做??
#include <stdio.h>
#include <fcntl.h> //For stat()
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h> //for fork(), wait()

int main()
{
char request;
char leftover[40]; //for cleaning up the left over inputs

//read user input
printf("YWIMC > ");
scanf("%c", &request);
while (request != 'Q'){
// Handle 'R' request

fgets(leftover, 40, stdin); //clean up left over to ready for
// next input
printf("YWIMC > ");
scanf("%c", &request);
}

printf("Goodbye!\n");
return 0;

}
是fork()和execl()
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏10(财富值+成长值)
百度网友3a0c8ce
推荐于2016-06-17 · 超过10用户采纳过TA的回答
知道答主
回答量:20
采纳率:0%
帮助的人:11.4万
展开全部
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>

#define BUFFERSIZE 40

int main()
{
char request,ch;
char leftover[BUFFERSIZE];
int pid, status;

printf("Please Enter Command:\n");
scanf("%c", &request);
ch = getchar();
while(request != 'Q')
{
fgets(leftover, sizeof(leftover), stdin);
pid = fork();
if(pid > 0)
{
wait(&status);
printf("Please Enter Command:\n");
scanf("%c", &request);
ch = getchar();
}
else if (pid == 0)
{
if (execl("/bin/sh", "sh", "-c",leftover,(char *)0) == -1)
{
printf("%s",strerror(errno));
exit(-1);
}
exit(-1);
}
else
exit(-1);
}
printf("GoodBye!\n");
return 0;
}
在linux下vi编辑器下编写代码,gcc编译运行测试过,希望对你有帮助。上面的编程主要是利用了进程编程的一些知识,推荐看看《Unix环境高级编程》(APUE),相信会对编程有很大的提高,大家共同进步。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式