A. 用c语言写电脑的DOS控制台操作系统
cmd命令非常多,写的话就是命令识别和动作响应两部分,
命令识别
涉及词法语法识别,需要编译技术;
动作响应
调用系统的api即可;
可以用借助lex和yacc来写
B. 如何在C语言 C++里面调用 DOS命令
使用system函数即可。
1、system函数:原型:int
system(const
char
*
command);功能:执行
dos(windows系统)
或
shell(Linux/Unix系统)
命令,参数字符串command为命令名;说明:在windows系统中,system函数直接在控制台调用一个command命令。
C. 什么是C语言 DOS系统
C语言是Combined
Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。
DOS是英文Disk
Operating
System的缩写,意思是“磁盘操作系统”。DOS是个人计算机上的一类操作系统。从1981年直到1995年的15年间,DOS在IBM
PC
兼容机市场中占有举足轻重的地位。而且,若是把部份以DOS为基础的Microsoft
Windows版本,如Windows
95、98和Me等都算进去的话,那么其商业寿命至少可以算到2000年。
D. 如何在C语言中调用DOS命令
在C语言中调用shell命令的方法实现。
C程序调用shell脚本共有两种方法
:system()、popen(),分别如下:
system()
不用自己去创建进程,系统已经封装了这一步,直接加入自己的命令即可
popen()
也可以实现执行的命令,比system
开销小
以下分别说明:
1)system(shell命令或shell脚本路径);
system()
会调用fork()产生
子历程,由子历程来调用/bin/sh-c
string来履行
参数string字符串所代表的命令,此命令履行
完后随即返回原调用的历程。在调用system()期间SIGCHLD
信号会被暂时搁置,SIGINT和SIGQUIT
信号则会被漠视
。
返
回值:如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(NULL),则返回非零值。
如果
system()调用成功
则最后会返回履行
shell命令后的返回值,但是此返回值也有可能为system()调用/bin/sh失败所返回的127,因
此最好能再反省
errno
来确认履行
成功
。
system命令以其简略
高效的作用得到很很广泛
的利用
,下面是一个例子
例:在/tmp/testDir/目录下有shell脚本tsh.sh,内容为
#!/bin/sh
wget
$1
echo
"Done!"
2)popen(char
*command,char
*type)
popen()
会调用fork()产生
子历程,然后从子历程中调用/bin/sh
-c来履行
参数command的指令。参数type可应用
“r”代表读取,“w”代表写入。遵循此type值,popen()会建立
管道连到子历程的标准
输出设备
或标准
输入设备
,然后返回一个文件指针。随后历程便可利用
此文件指针来读取子历程的输出设备
或是写入到子历程的标准
输入设备
中。此外,所有应用
文
件指针(FILE*)操作的函数也都可以应用
,除了fclose()以外。
返回值:若成功
则返回文件指针,否则返回NULL,差错
原因存于errno中。注意:在编写具SUID/SGID权限的程序时请尽量避免应用
popen(),popen()会继承环境变量,通过环境变量可能会造成系统安全的问题。
例:C程序popentest.c内容如下:
#include
main
{
FILE
*
fp;
charbuffer[80];
fp=popen(“~/myprogram/test.sh”,”r”);
fgets(buffer,sizeof(buffer),fp);
printf(“%s”,buffer);
pclose(fp);
}
E. c语言命令行程序如何在DOS下编译运行
1、打开开始,运行cmd,进入dos界面。
F. 在C语言中如何使用dos命令
用system()函数
原型:int
system(char
*cmd)
包含在dos.h下(VC
包含在stdlib.h)
如
定时关机
程序:
#include<stdio.h>
#include<dos.h>
#include<string.h>
void
main()
{
char
s[30]="shutdown
-s
-t
";
char
*p;
printf("please
input
how
many
seconds
you
want
to
wait
:
");
scanf("%s",p);
strcat(s,p);
system(s);
}
需要注意的是,上面的程序需在Turbo
C小编译,在VC环境下会提示error
C2065:
'system'
:
undeclared
identifier
可以改为:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int
main()
{
char
p[100]="shutdown
-s
-t
";
char
s[20];//注意这里不能写成*s否则即使调试成功,程序写无法正常运行!
int
str;
int
ch;
printf("请输入
等待时间
(秒):");
scanf("%s",s);
strcat(p,s);
system(p);
return
0;
}
一旦编译成功后就可以在工程文件夹下找到生成的*.exe
文件,以后就不用那么麻烦的键入命令啦,呵呵……
如果想取消关机,可另外在写一个程序:
#include<stdio.h>
#include<dos.h>
#include<string.h>
void
main()
{
char
s[30]="shutdown
-a
";
system(s);
}
二合一,那叫一个方便啊,哦也!!!
G. C语言怎样调用DOS系统
打开VC++后,新建一个工程后,这时新建一个项目。
输入C语言基本框架。
使用syetem函数来进行dos命令的执行。
若要调用系统时间,在引号中输入time命令,运行查看即可。
H. 用c语言执行dos命令
执行dos命令,可以使用库函数system。
1 头文件:
stdlib.h
2 声明:
int system(char *command);
3 功能:
执行系统命令command,当程序运行在windows下时,就是执行dos命令。
4 示例:
system("cls");
就是在输出窗口中执行dos命令cls, 其功能为清除屏幕上的所有输出。
I. 如何用C语言实现带参数的dos命令
需要使用带参数的主函数来实现。
带参数的主函数格式为:
int main(int argc, const char *argv[]);
其中argc为命令行参数的个数,包括可执行文件名。
argv为一个字符串数组,共计有argc个元素,依次为命令行输入的各个参数。其中argv[0]为执行的文件名。
下面的程序可以打印出文件名及参数。
#include<stdio.h>
intmain(intargc,constchar*argv[])//定义带参数的主函数
{
inti;
printf("执行文件名为:%s ",argv[0]);//打印可执行文件名
printf("有%d个参数: ",argc-1);//打印其它参数个数。
for(i=1;i<argc;i++)
{
printf("参数%d=%s ",i,argv[i]);//打印所有参数值。
}
return0;
}
输入:
test.exep1 p2 333 44
输出:
执行文件名为:test.exe
有4个参数:
参数1 = p1
参数2 = p2
参数3 = 333
参数4 = 44
J. 怎么用纯的c语言写dos系统
由于DOS操作系统的主体是磁盘数据的输入、输出,还有显示数据的输入、输出等的管理,而计算机提供这些功能的程序一般是用汇编写的,叫BIOS,所以用c写的调用BIOS函数的程序比较麻烦,需要编一大堆c语言的BIOS接口变换程序,而且涉及到堆栈处理(保护现场)问题时会引入许多不必要的堆栈操作,为优化和方便起见,一般用汇编写程序,若用c的话也会采用大量内嵌汇编的结构,这样利于简洁、快速地调用BIOS,利于直接读写设备的寄存器。
如果真想用纯c编写DOS操作系统,需要自己设计或找到现成的BIOS的c语言接口。