我正在阅读有关操作系统的内容。我读到,当操作系统启动时,命令解释程序作为用户进程启动,当您单击GUI元素时,例如,应用程序的桌面符号,启动该应用程序的命令将传递给此命令解释程序。
我知道shell或cmd.exe形式的命令解释器。那么这是否意味着在Windows上双击桌面图标时,例如word,下面有一个命令解释器来处理这个命令?因此,单击GUI元素等于在cmd.exe中编写命令?
在Windows下,进程资源管理器中显示的该进程的名称是什么?
答案 0 :(得分:2)
传统上,至少,“命令解释器”这个短语仅表示命令行解释器,例如cmd.exe
,如果你用这种方式解释短语,则声明是错误的。当界面是图形界面时,例如在Windows中,我们通常将其称为“shell”。
Windows shell在任务管理器中称为资源管理器explorer.exe
。
因此,单击GUI元素等于在cmd.exe中编写命令?
它们是等效的,因为它们都提供广泛相同的功能(允许用户与操作系统连接)但不相同。
请注意,通过将命令传递给cmd.exe
或反之亦然,Explorer无法正常工作。
答案 1 :(得分:0)
在linux中,Command解释器接受来自用户的命令然后将此命令提供给kernel.Command解释器在linux中也称为shell。在Linux中有不同的shell可用,如bash,korn等...我实现了简单c base shell如下图所示,
/*header*/
#include<stdio.h>
#include<string.h>
#include <signal.h>
#include<stdlib.h>
/*macros*/
/*maximum lenth of the line*/
#define LINE_MAX 10
/*function prototype*/
int getline1(char s[],int lim);
/*main*/
int main()
{
char line[LINE_MAX];/*to store line*/
int len;/*lenth of the input line*/
/*clear the terminal*/
system("clear");
printf("************This is the C shell**********\n");
printf("Enter ctrl+D to exit\n");
/*calls the getline function to get input line*/
while ((len = getline1(line, LINE_MAX)) > 0){
/*if specified command is entered then execute it
*else print command is not found
*/
if(!strcmp(line,"ls"))
system("ls");
else if(!strcmp(line,"pwd"))
system("pwd");
else if(!strcmp(line,"ifconfig"))
system("ifconfig");
else
printf("Command is not found\n");
}
printf("Exiting from shell..\n");
return(0);
}
/**
* @brief getline1 gets the line from user
* param [in] : s is string to store line
* param [in] : lim is maximum lenth of the line
*
* @return 0 fail nonzero otherwise
*/
int getline1(char s[],int lim)
{
/*c is to store the character and lenth is lenth of line*/
int c, lenth;
/*take the characters until EOF or new line is reached*/
for (lenth = 0; lenth < lim-1 && (c=getchar()) != EOF && c!='\n' ; ++lenth)
s[lenth] = c;
/*count the new line character*/
if(s[0] == '\n')
lenth++;
/*assign null at end*/
s[lenth] = '\0';
/*return lenth of the line*/
return lenth;
}