2015-04-01 3 views
1

Я пытаюсь написать простой код, который выполняет программу из подпапок из входного файла и выводит результат в выходной файл.Перенаправление пути execvp

Моя проблема в том, что когда я выполняю программу, она продолжает терпеть неудачу. поскольку команда execvp пытается найти exe с именем «a.out» в неправильном месте. (вместо того, чтобы искать правильный адрес пути).

вот код. пожалуйста, помогите мне :)

pid_t runner; 
char enter[] = "/home/demo/Desktop/OS/Ex1/Ex12/code/input.txt"; // input file 
char path[] = "/home/demo/Desktop/OS/Ex1/Ex12/Ex1/ronen/"; correct path 
char *r [] = {"./a.out", NULL}; 
int savedFD = dup(0); 
int sever2Fd=dup(1); 
int fdin = open(enter,O_RDONLY); 
int fdout = open ("output.txt", O_CREAT | O_RDWR, 0466); 
dup2(fdin, 0); 
dup2(fdout, 1); 
if ((runner = fork()) < 0) {perror("could not make fork");} 
else if (runner == 0) { 
    if (execvp(r[0],r) < 0) {printf("Failed!\n");} 
} else if (runner != 0) { 
    waitpid(runner,0,0); 
    dup2(savedFD, 0); 
    dup2(sever2Fd, 1); 
    printf("done\n"); 
} 
close(fdin);close(fdout); 
+0

Сначала проверьте выход функции getcwd(), чтобы увидеть, указали ли вы на правильный каталог? –

ответ

0

Ответ был прост.

"chdir (желаемый путь)" int dirchange = chdir (argv [1]);

Смежные вопросы