小白提问:如何编写一个程序可以占用终端并执行自己的命令?

sh/bash/dash/ksh/zsh等Shell脚本
回复
北_殇
帖子: 2
注册时间: 2011-09-25 15:12

小白提问:如何编写一个程序可以占用终端并执行自己的命令?

#1

帖子 北_殇 » 2011-11-07 14:37

第一次发帖,不知道表达的对不对,目前刚接触操作系统,实验要求使用C语言做一个程序,需要一个死循环占用终端,并且可以执行类似ls、touch、cd等命令。现在不知道怎么实现ls命令额。。。特来求助各位高手 :em06
不成熟的代码如下:

代码: 全选

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <grp.h>
#include <signal.h>




#define SIGSTCP 20
void cd();
void dir();

int main(){
char buf[80],prompt[100];
 	char tmp[80];
 	memset(tmp, 0, sizeof(tmp));
 	char *username;
 	struct group *data;
        data = getgrgid(getgid());
	username = data->gr_name="WLLY";
	strcat(tmp, "/home/");
	strcat(tmp, username);



printf("-------------*Welcome*-------------\n");
       while(1) {
		getcwd(buf, sizeof(buf));
 		
 	                memset(buf, 0, sizeof(buf));
			buf[0] = '~';
 			buf[1] = '\0';
		
		sprintf(prompt,"%s:%s$", username, buf);
               // printf("%s",prompt);
                 int c;
                  c=getchar();
                      if(c=='A')
                         cd();
                              else{ 
                                 if (c=='B')
                                   dir();
                                         else
                        printf("%s",prompt);}
                                        
                                         
            
              
                } 
               
 //		strcat(prompt,username);
 //		strcat(prompt,":");
 //		strcat(prompt,buf);
 //		strcat(prompt,"$");
 //		printf("%s",prompt);

       }



void cd(){
 printf("hgrtgf");
 printf("\n");	
}
void dir(){
printf("gvryhdf");
printf("\n");	
}
 
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 小白提问:如何编写一个程序可以占用终端并执行自己的命令?

#2

帖子 lilydjwg » 2011-11-07 14:53

代码: 全选

man 3 system
# or
man 2 fork
man 2 exec
北_殇
帖子: 2
注册时间: 2011-09-25 15:12

Re: 小白提问:如何编写一个程序可以占用终端并执行自己的命令?

#3

帖子 北_殇 » 2011-11-07 15:05

lilydjwg 写了:

代码: 全选

man 3 system
# or
man 2 fork
man 2 exec
没看明白额 :em20
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 小白提问:如何编写一个程序可以占用终端并执行自己的命令?

#4

帖子 tusooa » 2011-11-18 21:57

代码: 全选

exec /bin/bash
既然是shell版,就发一行shell吧。。。

代码: 全选

] ls -ld //
回复