⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shell.c

📁 example of shell which include the commands about them. 谋t runs eaisly the unix.(ubuntu/pardus/suse)
💻 C
字号:
#include <string.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include<time.h>#include <fcntl.h>int main(int argc , char* argv[]) {char cmdline[300], cmdOrg[300];char *zaman;char *arguman[30];int t,x,i,pid;while(1){printf("BIM322Shell%% : "); //her satırda promt verdikgets(cmdline); //komut satırını aldıkstrcpy(cmdOrg, cmdline);//komut satırını cmdOrg ye kopyaladıkint tokenSize=0;i=0;arguman[i]=strtok(cmdOrg, " ");	//boşluklara göre argumanları aldık ve arguman[]dizisina atadık   while(arguman[i++]!=NULL){	++tokenSize;        arguman[i]=strtok(NULL, " ");  }		for(i=0;i<tokenSize;i++){			printf("argumen[%d]=%s\n",i, arguman[i]); //arguman diizsinin yazdırdık		}if (strlen(cmdOrg) == 0) { //komut satırına birşey girilip girilmediğini kontrol ettik	continue;	   //komut girilmiyorsa yeniden prımt verdik}if (strcmp(arguman[0], "exit")==0) { //eğer exit girildiyse program return ediyor	return 0;} if (strcmp(arguman[0], "time")==0)  { //eğer komut olarak date girildiyse     	time(&t);		//time fonksiyonu ile zaman alınıyor 	zaman= ctime(&t); 	//ctime ile stringe çevirdik	printf("%s",zaman);	//zamanı ekrana yazdık}if (strcmp(arguman[0],"cd") == 0) {  //eğer komut olarak cd girildiyse		printf("%s\n",arguman[1]);   //		int bak =chdir(arguman[1]); //chdir fonksiyonu kullanarak directory i çağırdık			if(bak==-1){ 	//bak değeri ile girilen directory nin olup olmadığını kontrol ettik				printf("not found"); //eğer bak=-1 ise directory yok demektir uyarı verdik			}			if(bak==0){   //eğer bak=0 ise yani böyle bir directory var demektir 				printf("%s",arguman[1]);  //direktoryi ekrana yazdık			}}//I/O Redirectioni=0;	while(arguman[i]!='\0')	{ 		if((strcmp(arguman[i],"<"))==0){  //eğer arguman < ise dosyadan okur			if(fork()==0){			arguman[i]=NULL;			int fd;			fd=open(arguman[i+1],O_RDONLY);			dup2(fd,0);			close(fd);			execv(arguman[0],arguman);		}				break;					}		if((strcmp(arguman[i],">"))==0){  //eğer arguman < ise dosyaya yazar dosya yoksa oluşturur			if(fork()==0){			arguman[i]=NULL;			int fd;			fd=open(arguman[i+1], O_WRONLY | O_CREAT | O_TRUNC);			dup2(fd,1);			close(fd);			execv(arguman[0],arguman);			printf("gediiii\n");			//waitpid( pid,NULL,0 );		}		break;					}			else{			i++;		}	}//end of while(arguman[i]='\0')}//end of while(1)return 0;}//end of main

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -