c++ system()和WinExec()的区别[通俗易懂]

c++ system()和WinExec()的区别[通俗易懂]区别1.system是c库的函数WinExec是windows函数区别2.system有一个参数,是命令行Winexec有两个参数,一个是命令行,一个是窗口显示区别3.虽然两个都是命令行,但有很大的区别Winexec的命令行参数一般是一个外部程序的路径加给这个程序的参数,如Winexec("D:\\notepad.exe1.txt",WM_SHOWWINDOW);system的命令行参数其实是给…

大家好,又见面了,我是你们的朋友全栈君。

区别1.

system是c库的函数

WinExec是windows函数


区别2.

system有一个参数,是命令行

Winexec有两个参数,一个是命令行,一个是窗口显示


区别3.

虽然两个都是命令行,但有很大的区别

Winexec的命令行参数一般是一个外部程序的路径加给这个程序的参数,如

Winexec(”D:\\notepad.exe 1.txt”,WM_SHOWWINDOW);

system的命令行参数其实是给cmd程序的参数,system执行的时候是调用cmd程序,

假设system(“D:\\notepad.exe 1.txt“);程序运行时是调用cmd -c D:\notepad.exe 1.txt;

系统就会启动cmd程序,由它执行。所以system的参数就是cmd -c后所对应的参数

(cmd -c 后面应该接什么可以通过cmd /?查看),因此system可以使用”cd E:\”这样的参数,cmd会认识它,

但winexec就不认识。因为没有cd这个程序存在,其实cd只不过是cmd自定义的一个命令。


有时候用winexec和system调用同样的程序,会有不同的结果,

例:
winexec("\"D:\\program files\\notaped.exe\" \"D:\\my document\\1.txt\"",WM_SHOWWINDOW);   
 
system("\"D:\\program files\\notaped.exe\" \"D:\\my document\\1.txt\"",);   

看起来两个一样,但运行不一样

winexec可以正常运行,但system会报错,说找不到路径什么的或参数错误。

为什么呢?因为system的参数给cmd,cmd会用自己的方法解析参数(cmd帮助里有说明),

cmd 当碰到一对双引号时,它会把双引号里面的东西提取出来,当有多对双引号时,

它就会用其他方法来解析(老实说我也没看懂它的帮助里关于多对双引号解析的逻辑,如果你看懂了,麻烦告诉我一声)。

那么怎么解决上面的问题呢,很简单,在所有参数外面再包一对双引号

system("\"\"D:\\program files\\notaped.exe\" \"D:\\my document\\1.txt\"\"",);   

这样cmd只会去除首尾的双引号,不做其他解析


区别4.

winExec是不同步的进程调用,就是调用起来了就返回了,不会等调用起来的程序结束

system是同步调用进程,调用进程不结束,它就不返回,它可以获取调用进程所返回的值

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157581.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • export symbol 与 export symbol gpl

    export symbol 与 export symbol gpl1.EXPORT_SYMBOLEXPORT_SYMBOL(my_pub_func);在预编译阶段会解析为:externvoid*__crc_my_pub_func__attribute__((weak));staticconstunsignedlong__kcrctab_my_pub_func__attribute__((__used__))__attri

    2022年7月12日
    18
  • 点击按钮,回到页面顶部的5种写法

    点击按钮,回到页面顶部的5种写法1.锚点方式:2.scrollTop:scrollTop属性表示被隐藏在内容区域上方的像素数。元素未滚动时,scrollTop的值为0,如果元素被垂直滚动了,scrollTop的值大于0,且表示元素

    2022年7月3日
    35
  • offsetheight和clientheight_scrollheight属性

    offsetheight和clientheight_scrollheight属性介绍网上介绍clientheight、offsetheight、scrollheight的帖子很多,看后感觉明白了,一细想似乎又不明白了。为了获取更权威的解答,查阅了MDN文档,希望能帮助后来人。为了加深理解,看后,最好做下后边的实验。clientheightclientheight,内容的可视区域,不包含border。clientheight=padding+height-横向滚动轴高度。

    2025年9月6日
    2
  • 机器学习–朴素贝叶斯模型原理

    机器学习–朴素贝叶斯模型原理朴素贝叶斯中的朴素是指特征条件独立假设,贝叶斯是指贝叶斯定理, 我们从贝叶斯定理开始说起吧.1.贝叶斯定理贝叶斯定理是用来描述两个条件概率之间的关系1).什么是条件概率?如果有

    2022年8月4日
    5
  • Android常用加密方式

    Android常用加密方式加密解密简介加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。加密技术包括两个元素:算法和密钥。算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解密的一种算法。在安全保密中,可通过适当的钥加密技术和管理机制来保证网络的信息通信安全。加迷解密分类分为不可逆和…

    2022年5月17日
    39
  • Excel快捷键壁纸_桌面壁纸 霸气

    Excel快捷键壁纸_桌面壁纸 霸气PS快捷键桌面壁纸由于上传文件大小的限制,需要高清原图,请私聊……

    2022年9月29日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号