簡體   English   中英

shell c中的輸入輸出重定向

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM