救命吖!关于createfile函数,老师出错,GetLastError返回值是998,请大侠们赐教吖!!!

这里是代码,我主要是想测试标准输入输出重定向而已,问题就在于这里“HANDLEhFile=CreateFile(str1,GENERIC_WRITE,0,&sa,OPEN... 这里是代码,我主要是想测试标准输入输出重定向而已,问题就在于这里“HANDLE hFile=CreateFile(str1,GENERIC_WRITE,0,&sa,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
int i;
if(hFile==INVALID_HANDLE_VALUE)
{
i=GetLastError();
printf("Createfle has Error.\nError code is:%d",i);
return 0;
}
”createfile老是返回-1

#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
SECURITY_ATTRIBUTES sa;
sa.nLength=sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle=TRUE;
STARTUPINFO si={0};
si.cb=sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.cb=sizeof(STARTUPINFO);
char *str="123.exe";
char str1[10];
ZeroMemory(str1,10);
strcpy(str1,"123.txt");
HANDLE hFile=CreateFile(str1,GENERIC_WRITE,0,&sa,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
int i;
if(hFile==INVALID_HANDLE_VALUE)
{
i=GetLastError();
printf("Createfle has Error.\nError code is:%d",i);
return 0;
}
si.dwFlags=STARTF_USESTDHANDLES;
si.hStdInput=GetStdHandle(STD_INPUT_HANDLE);
si.hStdError=hFile;
si.hStdOutput=hFile;
PROCESS_INFORMATION pi;
for (i=0;i<10;i++)
{
BOOL bl=CreateProcess(str,NULL,NULL,NULL,TRUE,0,NULL,NULL,&si,&pi);
int m=GetLastError();
CloseHandle(pi.hProcess);
}
CloseHandle(hFile);
getchar();
getchar();
return 0;
}
展开
 我来答
437384801
2011-06-24 · TA获得超过1867个赞
知道小有建树答主
回答量:1299
采纳率:0%
帮助的人:515万
展开全部
因为你指定的文件名无效,123.TXT;它根本就无法建立,当它不存在时候,可以改为D:/123.txt
更多追问追答
追问
我的打开方式是OPEN_ALWAYS喔  这个选项不是当有这个文件的时候就打开  没的时候就新建吗?怎么会无效呢  能详细说点嚒?
追答
你的str="123.txt";这个是文件吗?应该是C:/123.txt吧或者其他样子,额。看你也是学习vc的加入我的团队吧:现在没几个人,需要你一样的人:叫c*_java
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式