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語言介面。