c++中怎么判断_tsystem()函数是否执行成功

原来也是,

曾经那是自己还 比较年轻,什么也不懂,

哈哈哈,

想用命令行的时候就使用_tsystem()这个函数,觉得挺简单,挺爽的。

可是越来越觉得有问题,

问题一:这个函数执行的命令行是否执行。

问题二:是否执行成功。

问题三:是否执行完成后正常退出。

 

但是问题总会解决,今天就是我和_tsystem()函数摊牌的时候了。虽然解决的问题只是一小部分,但是目前还可以解决燃眉之急。

深入讨论_tsystem()函数:

执行命令行md测试,执行成功,返回值为0.

执行命令行md测试,如果创建的文件夹已经存在,返回值为1

msdn里面是这么说返回值的:

如果命令是NULL的命令解释器,返回一个非零值。如果命令解释器没有找到,返回0,并设置errno为ENOENT。如果不为NULL命令,系统将返回值,则返回的命令解释器。它返回的值为0,只有当命令解释器返回的值为0。返回值 - 1表示一个错误,并把errno设置为下列值之一:

E2BIG
参数列表(这是依赖于系统)是太大了。

ENOENT
命令解释器,可以不被发现。

ENOEXEC
命令解释器的文件格式无效,无法执行。

ENOMEM
没有足够的内存可用于执行命令;或可用内存已损坏或无效块存在,这表明进程调用不正确分配。

后续整理。今天没时间了。

 --------------------------------------------------------------------------------------------------------------------------------------------

今天接着测试System()这个函数。

想说说文自己的想法:

这里单单在主线程中,调用System()函数作为测试。

第一:也就是说在主线程中,通过System函数创建一个新的进程,然后去得到这个进程的句柄来控制,但是,这样直接是没办法得到新创建的进程的句柄信息。

第二:就是,把这个System函数创建的进程放进一个内核对象或者作业里面,通过作业或者内核对象来控制自己新启动的进程。

第三:考虑到system这个函数是阻塞的,也就是它会等着它启动的进程执行完成后,才有返回值,这样就可以每次都判断它的返回值,来判断是否执行成功。再加上try 块来       捕  获异常。

第四:要么就通过定义宏,来用其他的函数来替换System函数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值