2012-03-24 5 views
1

ich diesen CodeC++ Verzeichniswechsel und führen machen

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

in/var/code/p1 haben, ist eine Make-Datei und eine Code-Datei (wenn ich in diesem Verzeichnis seine Arbeit machen tipe), ist dieser Code in/var/code/p2.

Mein Problem ist: Dieser Code kompiliert nicht den Code von/var/code/p1, das ist der Code von/var/code/p2 kompilieren, was mache ich also falsch?

+1

Wenn Sie beabsichtigen, hauptsächlich Befehlszeilenprogramme zu verwenden, ist C++ möglicherweise nicht das am besten geeignete Werkzeug. Das heißt: 'System (" make -C/var/code/p1 ")' wird 'make' in'/var/code/p1' ausführen. –

Antwort

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

sollte, da Chdir gibt bei Erfolg 0

chdir("/var/code/p1") 

Und der, wenn der Test ist falsch. Sie benötigen

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

ieah du hast Recht, das erste Mal, wenn ich tray mit System ("cd/var/code/p1; make") und ich einfach kopieren und fügen Sie den Code – xnl96

Verwandte Themen