作业一 创建进程

在Windows环境下,利用高级语言编程环境(限定为VS环境或VC环境)调用相关的系统调用(CreateProccess,即系统API)实现一个包括“进程创建,文件读写”功能的应用程序。有一个文本文件CommandList.txt,第一行是说明性文字:本文件最后一次打开和运行日期是20200224。第二行开始每行是一个可执行程序的名称(含路径)。编写一个应用程序能打开该文件,顺序执行其中的每个程序,并将文件第一行中的日期更新为当前日期。将源代码及运行截图放在同一个WORD文档中,以附件的形式上传提交。说明:文本文件CommandList.txt直接用记事本创建即可,以下为该文件的一个实例,可以自己设计该文件中第2行开始的内容。
本文件最后一次打开和运行日期是20200224
c:\Windows\system32\notepad.exe
c:\Windows\system32\calc.exe
c:\Windows\system32\mspaint.exe

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

int main(
//int *argc,char* argv
)
{
		  time_t t;		//将t声明为时间变量
    struct tm *p;	//struct tm是一个结构体,声明一个结构体指针
    time(&t);
    p=localtime(&t);//获得当地的时间
	 //
	 int i=0; //计数多少行
	 int k=0;//记录当前行数
    char a[100][100]={0};              //存入按行读取的数据

    char *zw="c:\\windows\\system32\\notepad.exe ";
    char *b="C:/Users/Administrator/Desktop/CommandList.txt" ;

    FILE *fp;
fp=fopen(b,"r");
 if(fp==NULL)
	{printf("can not load file!");return 1;	}  //检查是否打开;
	while(!feof(fp))
	{
	fgets(a[i++],100,fp);
//	printf("%s",a[i-1]);
	int temp = strlen(a[i-1]);
		if(a[i-1][temp-1]==10) a[i-1][temp-1]=0;
	}
fclose(fp);

fp=fopen(b,"w");
	//	fputs("本文件最后一次打开和运行日期是",fp);
	 fprintf(fp,"本文件最后一次打开和运行日期是%d%02d%02d %02d:%02d:%02d",1900+p->tm_year,1+p->tm_mon,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);
	 fputc('\n',fp);  //修改第一行
	 /
	 for(k=1;k<i;k++)//存入其他行数据
	 {fprintf(fp,a[k]);
	 fputc('\n',fp);
	 }
fclose(fp);
	 	 
    PROCESS_INFORMATION processInfo;
    STARTUPINFOA	startupInfo;
    ZeroMemory(&processInfo, sizeof(processInfo));
    ZeroMemory(&startupInfo, sizeof(startupInfo));
    startupInfo.cb = sizeof(startupInfo);
   BOOL ret1 = CreateProcess(NULL,"c:\\windows\\system32\\notepad.exe C:/Users/Administrator/Desktop/CommandList.txt",NULL, NULL, false,
				0, NULL, NULL, &startupInfo, &processInfo);
  for(k=0;k<i;k++){

    BOOL ret2 = CreateProcess(a[k],NULL,NULL, NULL, false,
				0, NULL, NULL, &startupInfo, &processInfo);
}
			  fp=fopen(b,"r");
		  	while(!feof(fp))
	{
	fgets(a[i++],100,fp);
	printf("%s",a[i-1]);
	int temp = strlen(a[i-1]);
		if(a[i-1][temp-1]==10) a[i-1][temp-1]=0;
	}
	 	 fclose(fp);
	 	 
	 	 
	return 0;
}

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值