熟悉Unix编程的人都知道,在中声明的函数system是用来在程序中调用shell命令的方法。例如你可以在程序中写一行system("rm *");这相当于你在命令行下敲rm *,但是cd命令却不能用system来做的。一般,你要改变程序的pwd,你都必须用函数chdir(const char*),它在中声明
根据shell的实现机制,我认为system内部实现,实际上是派生了程序的一个子进程,该子进程跟程序的父进程相同,都是shell进程,然后它将命令行参数传给这个子shell,子shell执行了cd命令后改变了自己的pwd为/home,之后又执行pwd输出为/home,随后消亡。而程序的pwd则决定于它的父shell进程的pwd,它没有变,所以第二次调用system("pwd")输出仍然为/home/chensj。
看如下c程式:
#include
#include
#include
int main()
{
char *path = "/Users/xuconglong/project/0client/scripts/";
if(-1 == chdir(path))
{
printf("工作目录[%s]切换错误", path);
exit(1);
}
system("./ccbpublish ../sanguoCardUI/640_960/ ../sanguoCard/res/common_game_res/640_960/);
printf("================【发布完成√】================\n");
exit(0);
}