我實現了一個簡單的shell。我想使用輸入/輸出重定向。我寫了一段代碼,但我的代碼不起作用。這裏是我的代碼:在shell中輸入輸出重定向c
回答
(習慣寫在你的printf語句%s\n
)
當你的編譯程序被稱爲myshell,你會看到>當它被賦予作爲參數:
./myshell arg1 arg2 ">" arg4
當你不牛逼報價>
,外殼會照顧重定向:
# Not what you want:
./myshell arg1 arg2 > arg4
會導致myshell被稱爲帶參數ARG1和arg2,myshell的結果將被重定向到arg4。
你能解釋一下,我怎樣才能解決這個比較如果聲明 – esrtr
@esrtr你需要使用''>「''而不是'>'來避免shell的默認重定向 –
@Walter A ...你的解決方案是基於事實OP的系統是基於Linux和Unix的,但它是獨立於平臺的解決方案 –
你複製FD到FD 0,這是stdin
。 stdout
是FD 1.您還應該使用dup2
,因此您可以明確指定要分配給哪個FD以及保存FD的宏。
dup2(fd, STDOUT_FILENO);
你也應該改變
if (*args[i] == '>')
到
if (strcmp(args[i], ">") == 0)
否則,它與>
開頭的參數匹配,即使以後有其它字符。
我使用你的解決方案。現在沒有錯誤。感謝那。但是我仍然可以使用'>'創建文件,但是我無法在該文件上寫任何內容。 – esrtr
- 1. C中的簡單輸入(Shell中的輸入重定向)
- 2. 在shell腳本中重定向輸出
- 3. 將輸入和輸出重定向到一個shell中
- 4. 輸出重定向在C
- 5. 在C重定向輸入++
- 6. Linux |在C |中執行Shell輸入重定向不顯示
- 7. C++重定向輸出
- 8. 輸入重定向C
- 9. 重定向mongo shell的錯誤輸出
- 10. 重定向PHP-shell腳本輸出
- 11. 使用Shell重定向標準輸出()
- 12. shell腳本重定向輸出
- 13. 如何實現shell輸入重定向
- 14. Java的輸入輸出重定向流
- 15. 代碼塊重定向輸入輸出
- 16. 重定向AWK輸出輸入到GDB
- 17. 重定向cmd.exe的輸入/輸出
- 18. 將stderr重定向到c shell中的標準輸出
- 19. 輸入重定向一樣輸出重定向
- 20. 如何重定向perl輸出在c#
- 21. 輸出重定向在Unix和C
- 22. 帶重定向輸入和輸出的MadLib C程序
- 23. C:重定向標準輸入,標準輸出到管道
- 24. 通過管道重定向CMD.exe輸出和c輸入
- 25. C輸入和輸出重定向錯誤?
- 26. 語法重定向到輸入/輸出到C(UNIX)
- 27. 重定向輸出
- 28. 標準輸入/輸出重定向,輸入不工作
- 29. Solaris unix,c-shell,重定向xargs執行命令輸出
- 30. 在Java中重定向輸入和輸出
什麼不行? – Downvoter
首先,* args [i] =='>'--->這不起作用。我寫了一個printf來嘗試if語句是否正確@cad – esrtr
你能提供完整的代碼嗎? –