1
我想寫一個簡單的代碼,從輸入文件的子文件夾執行程序,並將thr結果輸出到輸出文件中。重定向execvp路徑
我的問題是,當我執行程序時,它一直在我身上失敗。因爲execvp命令試圖在錯誤的位置上查找名爲「a.out」的exe文件。 (桌面而不是搜索正確的路徑地址)。
這是代碼。請幫助我:)
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);
首先檢查getcwd()函數的輸出以查看您是否指向正確的目錄? – 2015-04-01 14:27:41