[英]Input redirection problems in C++ when writing
您好,我可以使用 dup2 完美讀取文件,但是在寫入文件並使用以下命令添加文件時遇到問題:
shell: ls >+ lsout
shell: cat lsout
這是處理 dup2 以進行寫入的 C++ 代碼:
else if(write == true)
{
int fd = open(rCommand[1],O_WRONLY | O_APPEND);
dup2(fd, 1);
close(fd);
execvp(substrings[0], substrings);
}
Substrings 數組保存在命令行中生成的參數,rCommand[1] 是嘗試打開或寫入的文件名。
我的理解是 ls >+ lsout 假設創建一個名為 lsout 的空文件,但是當只執行當前目錄中的列表項時。 任何幫助,將不勝感激
我在運行ls >+ lsout
后發現的一件事是它創建了一個名為+
而不是lsout
的文件:
$ ls >+ lsout
ls: cannot access 'lsout': No such file or directory
因此, cat lsout
不可避免地會拋出錯誤:
$ cat lsout cat: lsout: No such file or directory
所以我想這需要在繼續之前先解決。 此外,在進一步研究中,我發現execvp(substrings[0], substrings);
聲明可能是錯誤的,因為execvp()
采用通常第一個參數為指針,我們正在處理的文件,但我的推斷是, substrings[0]
可能會保留我們執行的不是文件名的命令。
而且,就像@aschepler 所說的那樣,請嘗試發布一個更具描述性的問題,並附上錯誤消息和副作用,因為它對試圖解決您的問題的人有幫助:)
最好的事物。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.