当前位置: 代码迷 >> C语言 >> [求助]system函数问题
  详细解决方案

[求助]system函数问题

热度:393   发布时间:2007-08-10 13:43:59.0
[求助]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  

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

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

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


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
第一句和第二句没有任何联系,第一句的执行结果完全不会影响第二句
例如:
system("dir");
system("cd..");
system("dir");
试试吧
----------------解决方案--------------------------------------------------------

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


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

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

----------------解决方案--------------------------------------------------------
假如system函数不能连续处理几个DOS命令,那在c语言里有没有社么方法调用system函数让他能执行批处理文件呢
----------------解决方案--------------------------------------------------------
system("myrun.bat");
把myrun.bat放在你的程序目录下
----------------解决方案--------------------------------------------------------
如果是运行程序倒是可以用system,要是设置环境变量,那还是免了吧,这就等于是说一个进程设置另一个进程的环境变量
----------------解决方案--------------------------------------------------------
system("myrun.bat");
把myrun.bat放在你的程序目录下

试过了可以

谢谢大家了,特别要感谢下雨中飞燕 ^_^
----------------解决方案--------------------------------------------------------
  相关解决方案