الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

problem on creating a shell

بدأه the-dude في 27 مايو 2010 · 4 رد · 720 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم كيفكم, انا عندي برنامج المفروض يسوي system call لبعض اوامر الـ unix مثلاً ls, pwd, pico, exit...etc

المشكلة اني مني عارف اسويه بدون ما استدعي الـsystem call البرنامج بالـ C ومرفق في الملفات ياليت تساعدوني وشكراً

a.c

#2

وعليكم السلام .

هذا تعديل بسيط ربما يناسب فكرتك:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

main()
	{

		int i;
		int ok=0;
		char str[10];
		char *cmd[20] ={"dir","color","help","CHKDSK"};
		do{
		printf(">>");
		scanf("%s",str);
		for(i=0;i<4;i++){
		if (strcmp(str,cmd)==0) ok=1;
		}
 	if(ok) system(str);
		else printf("Command Not Found\n");
		ok=0;		
		}while(strcmp(str,"quit"));

	}
tvquran_6.gif

#3

بما أني جديد في موضوع السي ده, فأنا مستعد أساعدك للأخر, شوف ده كده:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int is_correct_command(char[]);
const char* cmd_list []= {"dir", "cls", "exit"};
int cmd_list_size = 3;
const char prompt[] = ">>" ;

int main(void){

	char input[10];
	do{
	   	 printf("%s ", prompt);
	   	 scanf("%s", input);
	   	 printf("%s", prompt);
	   	 is_correct_command(input) && system(input);
 	}while (strcmp(input, "exit")!= 0);

	system("pause");
	return 0;
}

int is_correct_command(char cmd[]){
	int i;
	for (i=0; i < cmd_list_size; i++){
		if (strcmp(cmd_list, cmd) == 0){
		   return 1;
		}
	}
	printf(" command not recognized\n");
	return 0;
}
#4

فهد الشلوي, هويدي يعطيكم الف الف عافية على جهدكم

#5

السلام عليكم مره اخرى بسألكم لاني حاولت اسوي الطريقة الي ابغاها وهي اني ما ابي استعمل ("system("ls ابيها تكون بـ execve هي الي تاخذ الكود وترجع لي النتيجة بس للاسف ماعرفت

s.c

تم تعديل هذه المشاركة بواسطة the-dude في 31 مايو 2010 في 06:51

مواضيع مشابهة