重定向execvp路径

时间:2015-04-01 14:14:28

标签: c system system-calls sys

我试图编写一个简单的代码,从输入文件中执行子文件夹中的程序,并将thr结果打印到输出文件中。

我的问题是,当我执行程序时,它一直在失败。因为execvp命令试图寻找名为" a.out"的exe。在错误的位置。 in(桌面而不是搜索正确的路径地址)。

这里是代码。请帮助我:))

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);

1 个答案:

答案 0 :(得分:0)

答案很简单。

“chdir(通路)” int dirchange = chdir(argv [1]);