Snippet
// Program 1.
// This guy will do the passing...
//
#include <stdio.h>
#include <windows.h>
int main(void) {
int i=0,lc=0; // Line count
char str[132];
char ch='a';
FILE *fp;
fp=fopen("C:\\test.txt","r+");
if(!fp)exit(1);
else {
while(ch!=EOF) {
ch=fgetc(fp);
if(ch=='\n'){
i=0;
lc++;
}
if(ch!='\n'){
str[i]=ch;
if(i==0){
//if(str[0]=='#')lc--;
if(str[0]!='1')lc--;
}
i++;
}
}
}
lc--;
fclose(fp);
return(lc); // This value will be passed to the 2nd program.
}
// Program #2
// This guy recieves the value from the return() of program #1.
//
#include <stdio.h>
#include <windows.h>
void main(void) {
DWORD exit_status;
char line_count[14]="LineCount.exe";
SECURITY_ATTRIBUTES sattr;
STARTUPINFO sinfo;
PROCESS_INFORMATION pinfo;
ZeroMemory(&sinfo,sizeof(sinfo));
sattr.nLength=sizeof(SECURITY_ATTRIBUTES);
sattr.lpSecurityDescriptor=NULL;
sattr.bInheritHandle=FALSE;
if(!CreateProcess(NULL,line_count,NULL,NULL,FALSE,0,NULL,NULL,&sinfo,&pinfo)) {
printf("ERROR: Cannot launch child process\n");
exit(1);
}
WaitForSingleObject(&pinfo.hProcess,INFINITE);
TerminateProcess(&pinfo,0);
GetExitCodeProcess(pinfo.hProcess,&exit_status);
while(exit_status==STILL_ACTIVE){
if(GetExitCodeProcess(pinfo.hProcess,&exit_status)) {
if(exit_status!=STILL_ACTIVE )printf("%d",exit_status );
}
else printf("GetExitCodeProcess() failed\n");
}
}
Copy & Paste
|