簡體   English   中英

C++編寫時輸入重定向問題

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

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