none
调用外部进程的问题 RRS feed

  • 问题

  • #include <stdio.h>

    int main()
    {
     int n=0; /*n完成对输入字符个数的统计*/

     printf("Please input a string:\n");
     while (getchar()!='\n')
      n++;

     printf("There are : %d characters.\n",n);
     
     return 0;
    }

     运行如下
    C:\t>fa
    Please input a string:
    farefef
    There are : 7 characters.
     下面是我的问题,我要写个调用fa.exe的外部程序,先打开fa.exe,然后向这个进程输入比方myycafaera字符,然后获取字符串的个数,结果返回主进程
     怎么实现?

    2011年11月21日 14:16

答案

  • // extern process
    #include <Windows.h>
    #include <iostream>
    using namespace std;
    
    int main(int argc, TCHAR* argv[])
    {
    	STARTUPINFO si = {sizeof(si)};
    	PROCESS_INFORMATION pi = {0};
    	TCHAR szApp[MAX_PATH] = {TEXT("E:\\B.exe")};
    	if(CreateProcess(szApp, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
    	{
    		WaitForSingleObject(pi.hProcess, INFINITE);
    		DWORD dwRet = 0;
    		if(GetExitCodeProcess(pi.hProcess, &dwRet))
    		{
    			cout<<"return value = "<<dwRet<<endl;
    		}
    
    		CloseHandle(pi.hThread);
    		CloseHandle(pi.hProcess);
    	}
    	else
    	{
    		cout<<"error: "<<GetLastError()<<endl;
    	}
    	return 0;
    }
    
    // fa.exe process
    #include <stdio.h>
    
    int main()
    {
     int n=0; /*n完成对输入字符个数的统计*/
    
     printf("Please input a string:\n");
     while (getchar()!='\n')
    	 n++;
     
     printf("There are : %d characters.\n",n);
     
     return n;
    }
    
    

     


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 Honny_yeyh 2011年11月22日 11:54
    2011年11月22日 1:36
    版主
  • 这个问题很多人问过了,你可以直接在论坛里搜索一下,我原来写过一个简单的,你可以参考下

    http://blog.csdn.net/vonger/article/details/5453711


    0xBAADF00D
    • 已标记为答案 Honny_yeyh 2011年11月22日 11:54
    2011年11月22日 7:16
    版主

全部回复

  • // extern process
    #include <Windows.h>
    #include <iostream>
    using namespace std;
    
    int main(int argc, TCHAR* argv[])
    {
    	STARTUPINFO si = {sizeof(si)};
    	PROCESS_INFORMATION pi = {0};
    	TCHAR szApp[MAX_PATH] = {TEXT("E:\\B.exe")};
    	if(CreateProcess(szApp, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
    	{
    		WaitForSingleObject(pi.hProcess, INFINITE);
    		DWORD dwRet = 0;
    		if(GetExitCodeProcess(pi.hProcess, &dwRet))
    		{
    			cout<<"return value = "<<dwRet<<endl;
    		}
    
    		CloseHandle(pi.hThread);
    		CloseHandle(pi.hProcess);
    	}
    	else
    	{
    		cout<<"error: "<<GetLastError()<<endl;
    	}
    	return 0;
    }
    
    // fa.exe process
    #include <stdio.h>
    
    int main()
    {
     int n=0; /*n完成对输入字符个数的统计*/
    
     printf("Please input a string:\n");
     while (getchar()!='\n')
    	 n++;
     
     printf("There are : %d characters.\n",n);
     
     return n;
    }
    
    

     


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 Honny_yeyh 2011年11月22日 11:54
    2011年11月22日 1:36
    版主
  • C:\sqlite>sqlite3 ddb.db
    SQLite version 3.7.9 2011-11-01 00:52:41
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    sqlite> create table ca(oo,oo2);
    sqlite> .import t.txt cac
    sqlite>

     

    如果调用上面的命令,不知道怎么调用

    2011年11月22日 6:14
  • 这个问题很多人问过了,你可以直接在论坛里搜索一下,我原来写过一个简单的,你可以参考下

    http://blog.csdn.net/vonger/article/details/5453711


    0xBAADF00D
    • 已标记为答案 Honny_yeyh 2011年11月22日 11:54
    2011年11月22日 7:16
    版主