[英]input output redirection in shell c
我實現了一個簡單的外殼。 我想使用輸入/輸出重定向。 我寫了一些代碼,但是我的代碼不起作用。 這是我的代碼:
您正在將FD復制到FD 0,即stdin
。 stdout
是FD1。您還應該使用dup2
,以便可以明確指定要分配給哪個FD,以及保存該FD的宏。
dup2(fd, STDOUT_FILENO);
你也應該改變
if (*args[i] == '>')
至
if (strcmp(args[i], ">") == 0)
否則,它將匹配任何以>
開頭的參數,即使它后面還有其他字符也是如此。
(在printf語句中習慣於寫%s\\n
)
當您將編譯后的程序稱為myshell時,在將其作為參數給出時,您會看到>:
./myshell arg1 arg2 ">" arg4
當您不引用>
,shell將負責重定向:
# Not what you want:
./myshell arg1 arg2 > arg4
將導致使用參數arg1和arg2調用myshell,並將myshell的結果重定向到arg4。
我認為您的If條件中不需要星號*。 您想將args [x]的值與符號“>”進行比較。
如果不是,您能否再多寫一些有關發生的錯誤的信息?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.