2012-03-24 73 views
1

我有这样的代码C++更改目录和运行make

switch(fork()){ 
     case -1: perror("fork"); 
      exit(1); 
     case 0: 
      if(chdir("cd /var/code/p1")) 
      system("make"); 
      break; 
     default: 
      break; 
     } 

在/ var /代码/ P1是一个make文件和代码文件(如果我TIPE使这个目录的工作),这个代码是在/ var/code/p2中。

我的问题是:这段代码没有从/ var/code/p1编译代码,这是从/ var/code/p2编译代码,所以我做错了什么?

+1

如果您打算使用主要从命令行程序,C++可能不是最合适的工具。这就是说:'system(“make -C/var/code/p1”)''会在'/ var/code/p1'中运行'make'。 – 2012-03-24 16:13:51

回答

3
chdir("cd /var/code/p1") 

应该

chdir("/var/code/p1") 

而且如果测试是因为CHDIR成功返回0不正确。您需要

if (chdir("/var/code/p1") == 0) 
     system("make");  
+0

ieah你是对的,我第一次托盘系统(“cd/var/code/p1; make”),我只是复制并粘贴代码 – xnl96 2012-03-24 16:05:38