文档介绍:一、system 2
(一)函数原型: 2
(二)函数说明 2
(三)源码示例 3
二、WinExec 3
(一)函数原型 3
(二)函数说明 4
1,UINT WinExec( 4
2,参数uCmdShow可能的取值为: 4
3,返回值 4
4,注意 5
5,示例程序 5
三、ShellExecute 5
(一)函数原型 5
1,功能: 6
2,示例; 6
(二)函数说明 6
1,参数说明 6
2,返回值 7
3,特殊用法 7
四、CreateProcess 9
(一)函数原型: 9
(二)参数: 9
0,参数简介 9
1, lpApplicationName: 10
2, mandLine 11
3, lpProcessAttributes: 11
4, lpThreadAttributes: 12
5.,bInheritHandles: 12
6, dwCreationFlags: 12
6, lpEnvironment: 15
7, CurrentDirectory: 15
8, lpStartupInfo: 16
9, lpProcessInformation: 17
(三) 返回值: 17
(四)注释: 17
(五)其它应用(还未试成) 20
1、打开指定的URL 20
2、打开指定的文件夹 20
3、打开帮助文件 20
4、小结 20
(六)源码示例: 20
五、小结 24
一、system
(一)函数原型:
int system(const char * string)
1,功能: 发出一个DOS命令
2,
3,示例:
第一种:system("cd c:\\windows");
system("mk aaa");
第二种:system("mk c:\\windows\\aaa");
第三种:system("cd c:\\windows & mk aaa");//&这个符号与,把两条命令分别执行
(二)函数说明
system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。
返回值
=-1: 出现错误
=0: 调用成功但是没有出现子进程
>0: 成功退出的子进程的id
如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1,但是存在一个特殊情况,那就是:如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为 system()调用/bin/sh失败所返回的127,因此最
好能再检查errno 来确认执行成功。
若参数string为空指针(NULL),则返回非零值。
在编写具有SUID/SGID权限的程序时请勿使用system(),system()会继承环境变量,通过环境变量可能会造成系统安全的问题。
(三)源码示例
#include <>
#include <>
int main(void)
{
cout<<"About to and run a mand\n";
char strCMD[]="dir";
int i=system(strCMD);
cout<<i<<endl;
return 0;
}
二、WinExec
(一)函数原型
UINT WINAPI WinExec(LPCSTR lpCmdLine, UINT uCmdShow);
功能:执行一个Dos命令
头文件:在Console环境中, 加上#include <>,其它不加
示例:
比如你的程序路径为:F:\123, 需要的参数是123,就写成这样:WinExec(" /k F:\\ 123",SW_HIDE);
(二)函数说明
1,UINT WinExec(
LPCSTR lpCmdLine, //命令行,如没指定路径会按以下顺序查找: 程序目录/当前目录/System32/Windows/PATH环境变量}
UINT uCmdShow //新启动程序显示方式{启动选项}
2,参数uCmdShow可能的取值为:
SW_HIDE = 0; {隐藏, 并且任务栏也没有最小化图标}
SW_SHOWNORMAL = 1; {用最近的大小和位置显示,