2012-03-24 65 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