我試圖從特定的文件讀取輸入並使用unix(sys調用)將其寫入到特定的文件。輸出部分必須以某種方式創建。試圖重定向輸入和輸出使用系統調用
我想要做類似如下:只使用這些功能 ./a.out < input.txt中> output.txt的 :叉,dup.dup2,EXEC,打開,寫入,讀取 代碼這個:
pid_t pid, runner;
char *path = argv[1];
char enter[] = "/home/demo/Desktop/OS/Ex1/Ex12/code/input.txt";
char to[] = "/home/demo/Desktop/OS/Ex1/Ex12/Ex1/ronen/";
char *out = "/home/demo/Desktop/OS/Ex1/Ex12/Ex1/ronen/out1.txt";
char *args[] = {to, "./a.out","<",enter,">",out, NULL};
char *args2[] = {"cd", to, "./a.out","<",enter,">",to ,NULL};
if ((runner = fork()) < 0) {perror("could not make fork");}
else if (runner == 0) {
printf("true\n");
execvp(args2[0],args2);
} else if (runner != 0) {
waitpid(runner,0,0);
printf("done\n");
}
所以當我把「a.out」文件放在桌面上時,它是有效的工作。
然而,有誰知道我可以重定向exec功能去我的spefic文件夾?所以我不必將可執行文件傳遞到桌面?
你沒有得到'shell'和'syscall'的概念。您應該首先嚐試更好地理解什麼是系統調用,以及在編寫代碼之前shell是什麼。例如,你正試圖將一個shell命令行傳遞給內核。這是無稽之談,shell **負責將命令行轉換爲fork/exec序列的正確參數。 – fjardon 2015-04-01 11:44:02
是你的問題:*如何編寫一個程序,啓動第二個程序的標準輸入和輸出被重定向到文件?* – fjardon 2015-04-01 11:50:33