文档详情

C下执行命令行的方法.docx

发布:2017-06-03约1.69万字共23页下载文档
文本预览下载声明
一、system()--执行shell命令 1、包含头文件: #include stdlib.h 2、定义 int system(const char * string); 3、参数 String:合法的可执行DOS(SHELL)命令 4、返回值 1)如果 system()在调用/bin/sh 时失败则返回127, 其他失败原因返回-1。 2)若参数string 为空指针(NULL), 则返回非零值。 3)如果system()调用成功则最后会返回执行shell 命令后的返回值, 但是此返回值也有可能为system()调用/bin/sh 失败所返回的127, 因此最好能再检查errno 来确认执行成功。 5、说明 system()会调用fork()产生子进程, 由子进程来调用/bin/sh-c string 来执行参数string 字符串所代表的命令, 此命令执行完后随即返回原调用的进程. 在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT 和SIGQUIT 信号则会被忽略。 6、用例 system(“ipconfig/all”); 7、重定向标准输出流 FILE *stream; stream = freopen(“data.txt”,”wb”,stdout); 运行结果可以重定向到data.txt 8、隐藏控制台窗口 #pragma comment( linker, “/subsystem:\”windows\” /entry:\”mainCRTStartup\”” ) 仍有调用的DOS窗口一闪,且重定向失效。 二、WinExec()—运行可执行程序 1、包含头文件 #includewindows.h 2、定义 UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow); 3、参数 lpCmdLine:指向一个空结束的字符串,串中包含将要执行的应用程序的命令行(文件名加上可选参数)。 uCmdShow:定义Windows应用程序的窗口如何显示,并为CreateProcess函数提供STARTUPINFO参数的wShowWindow成员的值。 //uCmdShow 参数可选值: SW_HIDE = 0; {隐藏, 并且任务栏也没有最小化图标} SW_SHOWNORMAL = 1; {用最近的大小和位置显示, 激活} SW_NORMAL = 1; {同 SW_SHOWNORMAL} SW_SHOWMINIMIZED = 2; {最小化, 激活} SW_SHOWMAXIMIZED = 3; {最大化, 激活} SW_MAXIMIZE = 3; {同 SW_SHOWMAXIMIZED} SW_SHOWNOACTIVATE = 4; {用最近的大小和位置显示, 不激活} SW_SHOW = 5; {同 SW_SHOWNORMAL} SW_MINIMIZE = 6; {最小化, 不激活} SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE} SW_SHOWNA = 8; {同 SW_SHOWNOACTIVATE} SW_RESTORE = 9; {同 SW_SHOWNORMAL} SW_SHOWDEFAULT = 10; {同 SW_SHOWNORMAL} SW_MAX = 10; {同 SW_SHOWNORMAL} 4、返回值 若函数调用成功,则返回值大于31。若函数调用失败,则返回值为下列之一: 1)0:系统内存或资源已耗尽。 2)ERROR_BAD_FORMAT:EXE文件无效(非Win32.EXE或.EXE影像错误)。 3)ERROR_FILE_NOT_FOUND:指定的文件未找到。 4)ERROR_PATH_NOT_FOUND:指定的路径未找到。 5)大于 31 {调用成功} 6)等于 0 {内存不足} 7)ERROR_FILE_NOT_FOUND = 2; {文件名错误} 8)ERROR_PATH_NOT_FOUND = 3; {路径名错误} 9)ERROR_BAD_FORMAT = 11; {EXE 文件无效} 5、用例 WinExec(notepad.exe,SW_SHOW);//运行计事本 WinExec(“cmd /c ipconfig”,SW_SHOW); //运行命令行 6、重定向标准输出流 不同窗口,无法重定向 7、隐藏控制台窗口 #pragma SW_HIDE 窗口都隐藏。 三、ShellExecute()—运行文件 1、包含头文件 #include shellapi.h 2、定义 ShellExecute( hWnd: HWND; {指定父窗口句柄} Operation: PChar; {指定动作, 譬如: open、runa
显示全部
相似文档