草庐IT

C++标准

全部标签

windows - 附加到标准输入

我有一个交互式命令行程序,我们称之为program.exe。当它运行时,我可以输入一堆不同的命令来做不同的事情。我们称它们为:doA、doB、doC和quit。现在,事实证明,我想在program.exe中做的第一件事是总是doA。我想保存一些击键并自动让program.exe在启动时运行命令doA。不幸的是,我不能只在命令行上传递“doA”,因为创建program.exe的人没有实现该功能。在我看来,我有几个选择:编写另一个调用program.exe的程序,将doA写入它的标准输入,然后将它自己的标准输入挂接到program.exe的标准输入,并将program.exe的sdtout

c - MinGW 中没有 fopencookie 或 fmemopen 吗?

我可以使用什么来编写自定义流? 最佳答案 fmemopen是POSIX但不是C标准的一部分。fopencookie不是任何标准的一部分;这是一个GNU函数。tmpfile是fmemopen的一个很好的可移植替代品。这些函数几乎相同,只是tmpfile速度较慢并且需要fread来取回数据。一般来说,如果您可能需要将输出发送到文件以外的其他地方,最好不要编写采用FILE*的代码,而是支持自定义输出回调或其他东西。 关于c-MinGW中没有fopencookie或fmemopen吗?,我们在S

c - 为什么 AssignProcessToJobObject 在 XP 上失败并出现拒绝访问错误?

我有以下代码:#include#include#include#pragmacomment(lib,"shlwapi.lib")int__cdeclwmain(intargc,PWSTRargv[]){HANDLEJob(CreateJobObject(NULL,NULL));if(!Job){wprintf(L"Couldnotcreatejobobject,error%d\n",GetLastError());return0;}HANDLEIOPort(CreateIoCompletionPort(INVALID_HANDLE_VALUE,NULL,0,1));if(!IOPort

python - 在 windows 7 下的 python 中使用文本文件作为标准输入

我是win7用户。我无意中读到了*nix系统中的重定向(如command1outfile),然后我发现somethingsimilarcanbedoneinWindows(link).python也可以用管道(?)或标准输入/标准输出(?)做这样的事情。我不明白这在Windows中是如何发生的,所以我有一个问题。我使用某种专有的Windows程序(.exe)。该程序能够将数据附加到文件中。为简单起见,我们假设它等同于whileTrue:f=open('textfile.txt','a')f.write(repr(ctime())+'\n')f.close()sleep(100)问题:我

c - kbhit() 作为转义触发器

我想将kbhit()用于“按任意键继续”功能。但是,在循环中使用kbhit()之后,按下的键存储在标准输入中。所以在下一个scanf()中,之前按下的键出现在输入中。intx,b=0;printf("Pressanykeytocontinue...")while(b==0){b=kbhit();}system("cls");printf("Enternumber:");scanf("%d",&x);因此,如果用户按下一个键,比如说字母K,k会出现在“输入数字:”之后。我曾尝试寻找解决方案,但未能使任何解决方案奏效。我试图将退格字符放入输入流中。我也尝试使用getch(),但是,用户必须

c - getaddrinfo() - Linux 与 Windows

在Linux中,我可以调用getaddrinfo()到本地套接字getaddrinfo(NULL,port,&hints,&servinfo)来创建这样的列表:IPv4:0.0.0.0|socktype:1|protocol:6IPv4:0.0.0.0|socktype:2|protocol:17IPv4:0.0.0.0|socktype:3|protocol:0IPv6:::|socktype:1|protocol:6IPv6:::|socktype:2|protocol:17IPv6:::|socktype:3|protocol:0而在Windows中,任何与本地机器相关的调用"N

c - CreateSemaphore() API 中的 lmaxcount 参数有什么用?

我正在学习Windows操作系统,并且正在编写标准的消费者生产者问题。我有一个用于资源计数的信号量和一个用于同步的互斥锁。我已经在CreateSemaphore()中传递了最大计数值50,因此它不应允许生产者创建超过50个资源。但是当我运行代码时,它远远不止于此。我是否错误地理解了maxcount参数的使用?我也贴代码。请帮我解决这个问题。#include#includeDWORDWINAPIconsumerThread(LPVOIDargs);DWORDWINAPIproducerThread(LPVOIDargs);intshared;HANDLEhMutex;HANDLEhSem

c++ - 使用父窗口在对象中启动线程

我有一些旧的MFC代码,其中一个对象继承了CDialogclassMYCLASS:publicCDialog使用标准构造函数MYCLASS(CWnd*pParent=NULL);这个类的每个实例都从主窗口初始化,OverriddenCreate函数创建一个无模式对话框BOOLMYCLASS::Create(CWnd*pParentWnd,longiPort){//createthedialoguethatIrequired!CDialog::Create(MYCLASS::IDD,pParentWnd);//otherstuff....}然后实现它自己的WindowProc。LRESU

c - systeminfo 如何打印行?

我正在使用以下代码在Windows7上获取系统信息。#includeintmain(){FILE*p;p=popen("systeminfo","r");if(!p){fprintf(stderr,"Erroropeningpipe.\n");return1;}while(!feof(p)){printf("%c",fgetc(p));}if(pclose(p)==-1){fprintf(stderr,"Error!\n");return1;}return0;}运行代码时,命令行会等待几秒钟以获取所需信息。第一行说:loadingprocessorinformation...然后将自身

c - 尝试将 str 写入具有特殊文件名 "con"的文件,但它被打印到 stdout

FILE*fp=fopen("./con","w");char*s="hello!";fwrite(s,sizeof(char),strlen(s),fp);fclose(fp);return0;如果我的文件名为“con”,那么fwrite()将像printf()一样工作。它是如何工作的? 最佳答案 Windows/DOS有多个reservedfilenames包括CON、PRN、AUX、CLOCK$、NULCOM1、COM2、COM3、COM4LPT1、LPT2、LPT3、LPT4等。CON是标准控制台(输出),所以这是数据的去向