| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 417 人关注过本帖
标题:[求助]system函数问题
收藏  订阅  推荐  打印 
祺姝
Rank: 1
等级:新手上路
帖子:6
积分:160
注册:2007-8-10
[求助]system函数问题

char filename[100]="\"D:\\安装软件\\VSS\\win32\"";
char *cmd3="\"set SSDIR=E:\\test_vssdata\"";
char *cmd4="\"SS status $\\ -r -Yadmin,840408 -o@test.txt\"";
strcat(filename,cmd3);
strcat(filename,cmd4);
system(filename);
system("set");

这段代码是利用system函数执行访问VSS库的命令行,编译运行后出现的结果发现设置环境变量这行set SSDIR=E:\\test_vssdata没设置成功(system("set");显示的结果没有看到设置的SSDIR环境变量),请大家帮我看下问题出在哪了?
先谢谢啦^_^
搜索更多相关主题的帖子: system函数  quot  test  set  filename  
2007-8-10 13:43
雨中飞燕
Rank: 2
等级:ID已被封
威望:8
帖子:2200
积分:22984
注册:2007-8-9

第二次执行system指令相当于运行第二次,而不等同于在一个bat文件里运行第二行内容
是已经再次重新初始化了,

system("set");和之前的system函数没有任何联系

[此贴子已经被作者于2007-8-10 13:49:48编辑过]

2007-8-10 13:49
祺姝
Rank: 1
等级:新手上路
帖子:6
积分:160
注册:2007-8-10

但是第一个system运行时还是没执行set SSDIR=E:\\test_vssdata,因为SS status $\\ -r -Yadmin,840408 -o@test.txt这句执行的结果不是设置了set SSDIR=E:\\test_vssdata后应该有的结果


2007-8-10 14:03
雨中飞燕
Rank: 2
等级:ID已被封
威望:8
帖子:2200
积分:22984
注册:2007-8-9

第一句和第二句没有任何联系,第一句的执行结果完全不会影响第二句
例如:
system("dir");
system("cd..");
system("dir");
试试吧
2007-8-10 14:25
祺姝
Rank: 1
等级:新手上路
帖子:6
积分:160
注册:2007-8-10

楼上意思是说filename="D:\安装软件\VSS\win32\""set SSDIR=E:\test_vssdata\""SS status $\ -r -Yadmin,840
408 -o@test.txt"'D:\安装软件\VSS\win32\"这个里的三个命令中第一个执行后不影响第二个吗?


2007-8-10 14:37
boot2046
Rank: 3Rank: 3
等级:中级会员
威望:3
帖子:168
积分:2016
注册:2007-7-23

不熟悉windows,不知道他的system是调的什么
但是在Linux下,system函数是去调用"/bin/sh -c 命令"
所以等于是shell进程去执行的,所以设置的环境变量也就只是对那个shell管用,shell结束也就无效了

再运行system等于是又起了一个shell,他和之前的不是同一个,不相关,所以也就得不你要的结果了

Linux是简单的,你不需要成为天才也能理解这种简单,Windows是复杂的,就算你是天才也不能理解这种复杂
2007-8-10 14:43
祺姝
Rank: 1
等级:新手上路
帖子:6
积分:160
注册:2007-8-10

假如system函数不能连续处理几个DOS命令,那在c语言里有没有社么方法调用system函数让他能执行批处理文件呢

2007-8-10 14:52
雨中飞燕
Rank: 2
等级:ID已被封
威望:8
帖子:2200
积分:22984
注册:2007-8-9

system("myrun.bat");
把myrun.bat放在你的程序目录下
2007-8-10 14:54
boot2046
Rank: 3Rank: 3
等级:中级会员
威望:3
帖子:168
积分:2016
注册:2007-7-23

如果是运行程序倒是可以用system,要是设置环境变量,那还是免了吧,这就等于是说一个进程设置另一个进程的环境变量

Linux是简单的,你不需要成为天才也能理解这种简单,Windows是复杂的,就算你是天才也不能理解这种复杂
2007-8-10 14:56
祺姝
Rank: 1
等级:新手上路
帖子:6
积分:160
注册:2007-8-10

system("myrun.bat");
把myrun.bat放在你的程序目录下

试过了可以

谢谢大家了,特别要感谢下雨中飞燕 ^_^

2007-8-10 14:59
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.073479 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved