网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月21日漏签0天
linux编程吧 关注:27,666贴子:11,825
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 2回复贴,共1页
<<返回linux编程吧
>0< 加载中...

高手们能帮小弟看看这个用C编写的LINUX简单命令解释器吗?

  • 只看楼主
  • 收藏

  • 回复
  • 鱼旦仔
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
实现的命令解释如下:
pwd                   //显示当前目录名
dir <目录名>           //列出目录及文件
cd   <目录名或路径>    //改变当前文件夹
newdir   <目录名>      //新建目录
deldir   <目录名>       //删除目录
exit                  //退出命令解释程序
提示:整个程序的大致框架可参考如下:
while ( exit未被输入 )
{    接收键盘的一行输入
     分析输入的命令
创建子进程,在子进程中对输入的命令进行处理从而实现功能
父进程等待子进程结束
}
2. 设计要求
(1) 设计必须在Linux环境下进行。
(2) 命令解释程序的提示符为:@
(3) 程序编写中不得使用system()系统调用。
(4) 整个程序必须严格经过测试,完成所有基本功能。源程序应有较详尽的注释。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
int main(int takenc,char*takenv[])
{
     int i=0,s;
     pid_t pid;
     char *a;
     char *taken[50];
     while (1)
     {
         fgets(a,50,stdin);
         for (i=0;i<=sizeof(a);i++)
             {
                 if (*(a+i)==' ')
                     {
                         taken[0]=strtok(a," ");
                         taken[1]=strtok(NULL,"\n");
                         break;
                      }
                 if (*(a+i)=='\n')
                     {
                         taken[0]=strtok(a," ");
                         taken[1]=NULL;



  • 鱼旦仔
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
                         break;
                     }
               }
        
         if(strcmp(taken[0],"exit")==0)
             {
                 exit(0);
             }
             else if (strcmp(taken[0],"cd")==0)
                 {
                     chdir(taken[1]);
                  }
             else if (strcmp(taken[0],"newdir")==0)
                 {
                     mkdir(taken[1]);
                 }
             else if (strcmp(taken[0],"deldir")==0)
                 {
                     rmdir(taken[1]);
                 }
         else
             {
                 if((pid=fork()) < 0)
                     {
                         perror("fork");
                         exit(1);
                     }
                 if(pid==0)
                     {
                         execvp(taken[0],taken);
                         exit(-1);
                     }
                 if(pid>0)
                 wait(&s);
             }
}
return 0;
}
不知怎么打了命令没有输出,望高手指教


2025-08-21 08:55:00
广告
不感兴趣
开通SVIP免广告
  • 121.8.147.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
   我跟你同一个班的


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 2回复贴,共1页
<<返回linux编程吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示