如果您致電opendir(argv[i])
和argv[i]
是textfile
而不是directory
的名稱,會發生什麼情況?在文本文件中調用opendir(3)而不是目錄
回答
返回值
的opendir()
和fdopendir()
函數返回一個指向目錄流。出錯時,返回NULL
,並適當設置errno
。
在這種情況下,errno
將是ENOTDIR
:name不是目錄。
謝謝。有沒有辦法知道argv [i]是不是使用opendir的文件名? – Apollo 2014-08-30 20:13:27
看看['stat'](http://linux.die.net/man/2/stat),你可以在響應中使用一個'S_ISREG'宏來檢查它是否是普通文件。 – Cornstalks 2014-08-30 20:15:02
可能首先嚐試使用fopen打開它作爲文件,然後將其作爲目錄打開它可能會更容易嗎? – Apollo 2014-08-30 20:18:07
的manual說會發生什麼:
的執行opendir()和fdopendir()函數返回一個指向 目錄流。 出錯時,返回NULL,並且適當地將errno設置爲 。
返回值
成功完成後,這些功能必須返回一個指針型DIR的對象。否則,這些函數將返回一個空指針並設置errno來指示錯誤。[...]
ERRORS
的執行opendir()函數可能會失敗,如果:
[...]
[ENOTDIR]
的一個組件dirname命名現有文件,既不是目錄,也不是目錄的符號鏈接。
因此,它返回NULL
,並將errno
設置爲ENOTDIR
。
- 1. 在Git中忽略目錄中的文件而不是目錄本身
- 2. 403錯誤只是目錄,而不是目錄中的文件
- 3. File.Copy目標文件是一個目錄,而不是文件。
- 4. 不能opendir「沒有這樣的文件或目錄」在Perl
- 5. 目錄的創建,而不是文件
- 6. StreamWriter創建目錄而不是文件
- 7. 僅複製目錄中的文件而不是目錄
- 8. 重命名文件,而不是文件路徑中的目錄
- 9. apk文件在bin/classes目錄下,而不是bin文件夾
- 10. 在目錄中使用命名約定而不是文件名
- 11. 文件是一個目錄而不是文件
- 12. makefile在src目錄中創建目標文件而不是對象文件夾
- 13. Shell腳本:檢查該文件是否爲文件而不是目錄
- 14. 找到目錄中的所有文件不是目錄本身
- 15. 刪除目錄內的文件而不是整個目錄
- 16. 文件被顯示爲目錄,而不是文件?
- 17. 返回文件的文件路徑,而不是當前目錄
- 18. 文件串製作目錄,而不是文件名
- 19. 上市目錄:Opendir()
- 20. Directory.createDirectory在iOS中創建文件而不是目錄
- 21. 「/」在文件名中,而不是目錄分隔符
- 22. 在.htaccess中的IndexIgnore隱藏目錄而不是文件?
- 23. 新的文件被Eclipse目錄中,而不是在當前目錄
- 24. PHP檢查文件是否存在而不是目錄
- 25. 通過PLSQL打開文本文件而不創建目錄
- 26. ReactJS:JSON文件是從本地主機取代而不是項目目錄
- 27. 使用curl和opendir找不到文件
- 28. 保存/檢索項目目錄中的文件,而不是輸出目錄
- 29. .htaccess文件的mod_rewrite重定向到父目錄,而不是在文件名是在兩個目錄
- 30. 使C++應用程序使用文件目錄,而不是pwd
「發生了什麼....」你總是可以試試看,並看到 – TerryG 2014-08-30 20:15:01
@TerryG:但如果行爲是未指定/未定義的,那並不總是可靠的(幸好,在這種情況下,它是明確的,所以這將是一個很好的教育測試來嘗試)。 – Cornstalks 2014-08-30 20:16:30