任务1-命令解释器的实现Word文档下载推荐.doc
- 文档编号:13064159
- 上传时间:2022-10-04
- 格式:DOC
- 页数:4
- 大小:39.50KB
任务1-命令解释器的实现Word文档下载推荐.doc
《任务1-命令解释器的实现Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《任务1-命令解释器的实现Word文档下载推荐.doc(4页珍藏版)》请在冰豆网上搜索。
将batch文件中所列的应用程序启动运行(批处理)
3.实践报告主要内容
设计思路
1从batch中读取一行字符串
2将读取的字符串作为文件名打开,若失败则显示创建进程失败的信息
3若成功,则显示子进程的PID
4重复以上操作,直至将文件batch读完
主要代码结构
#ifdefUNICODE
#undefUNICODE
#endif
#ifdef_UNICODE
#undef_UNICODE
#include<
windows.h>
stdio.h>
stdlib.h>
conio.h>
tchar.h>
fstream>
usingstd:
:
ifstream;
int_tmain(intargc,LPTSTRargv[]){
STARTUPINFOStartInfo;
/*Result*/
PROCESS_INFORMATIONProcessInfo;
/*Result*/
ZeroMemory(&
StartInfo,sizeof(StartInfo));
StartInfo.cb=sizeof(StartInfo);
/*Creatanewprocesstoexecute*/
/*CreateProcessparameters*/
LPCTSTRlpApplicationName=NULL;
//pointertonameofexecutablemodule:
Nomodulename(usecommandline)
LPTSTRlpCommandLine;
//pointertocommandlinestring,usetocreateanewprocess
LPSECURITY_ATTRIBUTESlpProcessAttributes=NULL;
//processsecurityattributes:
Default
LPSECURITY_ATTRIBUTESlpThreadAttributes=NULL;
//threadsecurityattributes:
Default
BOOLbInheritHandles=FALSE;
//handleinheritanceflag:
FALSE,thehandlesarenotinherited
DWORDdwCreationFlags=CREATE_NEW_CONSOLE|NORMAL_PRIORITY_CLASS;
/*awindowperprocessandanormalpriority*/
LPVOIDlpEnvironment=NULL;
//Useparent'
senvironmentblock
LPTSTRlpCurrentDirectory=NULL;
//Useparent'
sstartingdirectory
LPSTARTUPINFOlpStartupInfo=&
StartInfo;
//pointertoSTARTUPINFOstructvariable
LPPROCESS_INFORMATIONlpProcessInformation=&
ProcessInfo;
//pointertoPROCESS_INFORMATIONstructvariable
/*1.readfile"
batch"
*/
ifstreamfile("
);
if(!
file)
{
printf("
Cannotfindfile\"
batch\"
.\nPressanykeytoexit."
_getch();
return0;
}
/*2.copythecommandfromcommandlineparameters*/
charcProcess[50];
while(!
file.eof()){
memset(cProcess,0,sizeof(cProcess));
file>
>
cProcess;
if(cProcess[0]=='
\0'
)
{
break;
}
lpCommandLine=cProcess;
if(!
CreateProcess(
lpApplicationName,
lpCommandLine,
lpProcessAttributes,
lpThreadAttributes,
bInheritHandles,
dwCreationFlags,
lpEnvironment,
lpCurrentDirectory,
lpStartupInfo,
lpProcessInformation)
){
fprintf(stderr,"
CreateProcess\"
%s\"
failed(%d).\n"
cProcess,GetLastError());
}
else
fprintf(stdout,"
TheChildProcess:
%s'
sPID:
%d.\n"
cProcess,ProcessInfo.dwProcessId);
//Closeprocessandthreadhandles.
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
file.close();
fprintf(stdout,"
TheParentProcesshavetoterminate.\nPressanykeytoexit"
_getch();
return(0);
}
4.实践结果
基本数据:
²
源程序代码行数:
87
完成实践投入的时间(小时数):
0.5
ü
资料查阅时间:
0.2
编程调试时间:
0.3
测试数据设计
notepad.exe
calc.exe
mspaint.exe
测试结果分析
记事本、计算器及画图三应用程序依次打开
控制台输出:
notepad.exe’sPID:
2124.
calc.exe’sPID:
4884.
mspaint.exe’sPID:
1256.
TheParentProcesshavetoterminate.
说明程序运行正常。
5.实践体会
实践过程中遇到的问题及解决过程
老师演示的时候是将要打开的程序直接写在环境变量中,而该实验是将其写在batch文件中。
对于文件的读取操作我已有所生疏,于是花了一点时间温习了一下相关知识,程序才得以完成。
实践体会和收获
通过此次实验,我进一步提高了对文件读取操作的运用熟练度,并通过阅读样例程序初步掌握了创建进程的方法。
6.参考文献
[1]汤子灜著.《计算机操作系统》(修订版)[M].西安:
西安电子科技大学出版社.2000
[2]
AbrahamSilberschatz,PeterBaerGalvinandGregGagne.郑扣根等译.操作系统概念第六版,翻译版.[M].北京:
高等教育出版社.2004
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 任务 命令 解释 实现