我不知道是否有一些API可以在Linux上获得当前进程的命令行参数。我想我很不清楚。问题的真正目的是通过命令行参数传递unicode文件名。相当于Linux的GetCommandLine和CommandLineToArgv?
回答
从文件/proc/self/cmdline
阅读例如:
[[email protected] ~]$ od -a /proc/30651/cmdline
0000000 / u s r / s b i n / h t t p d nul
0000020
或者,一个令人满意的清爽自我参照:
[[email protected] images]$ od -c /proc/self/cmdline
0000000 o d \0 - c \0 / p r o c / s e l f
0000020 / c m d l i n e \0
0000031
小心定义每个标记的空字节(0x00)。此外,/ proc/self/cmdline中的文本不会完全是用户输入的内容 - 引号将被删除,等等。 – 2010-01-05 01:55:24
还要小心,目前'/ proc'界面只显示第一页(4k)的命令行,尽管它可能会更长(我相信高达32页)。 – Jester 2015-06-04 11:50:32
只需使用argc
和argv
。 argv
将采用本地编码(可以是UTF-8),然后从那里转换为wchar_t
(例如,通过mbtowc
)。
Linux本身不会执行“Unicode文件名”。就内核而言,所有文件名只是8位字符的随机序列。
糟糕的事情可能发生,就像用户可以编写文件然后更改它们的区域设置,并保留它们的文件名在先前的区域设置中编码一样。所以如果你将一个文件名作为输入,你需要保留在main()中传递给你的确切的8位字节序列。如果您需要将其显示给用户,请尝试在当前语言环境的编码中对其进行解释并转换为您最喜欢的Unicode类型。
在许多现代Linux系统上,编码将是UTF-8,所以这通常工作正常。
- 1. SYSTEMTIME相当于linux
- 2. Linux相当于solaris的fork1
- 3. Linux相当于windows的EnterCriticalSection
- 4. 什么是Linux相当于LPTSTR和LPCSTR?
- 5. solaris filemerge和pstack相当于linux
- 6. Linux相当于Solaris walkcontext
- 7. Linux/OSX相当于Windows PlaySound
- 8. pathconf()linux相当于windows API
- 9. 相当于在Linux上
- 10. Linux相当于Windows挂钩
- 11. 在Linux中相当于unix2dos
- 12. 在Linux上相当于SetPriorityClass
- 13. 相当于Winsock2的LSP的Linux OSI
- 14. REALbasic的讲话相当于为Linux
- 15. Mac上相当于Linux上的祝福
- 16. 的Solaris相当于在Linux上
- 17. 相当于Linux上的BBEdit,Win
- 18. 需要WIX Installer的Linux相当于
- 19. IIS上的Linux shell相当于
- 20. 相当于Windows服务功能的Linux?
- 21. Linux中的WSAEvent相当于什么?
- 22. 相当于Linux内核3.18中的i2c_adapter_quirks
- 23. HID回调函数 - 相当于linux吗?
- 24. 什么是Linux相当于GetProcessIoCounters?
- 25. 在Linux C++中相当于WIN32_FIND_DATA
- 26. 什么是Linux相当于使用system()
- 27. 什么Linux类相当于CStdioFile
- 28. 相当于Linux mkdir {fileA,fileB}在PowerShell中
- 29. authbind相当于centos/amazon linux/rhel
- 30. Linux相当于直接绘制
'int main(int argc,char * argv [])',你有'argc'参数的个数,'argv'是一个包含参数的'char'指针数组。这是ANSI C,所以可用于任何便携式实现。或者你想要命令行选项解析? – 2010-01-05 01:45:17
我明白了。我意识到argc argv范式。我想知道如何通过argv获得unicode参数。 – lyxera 2010-01-05 01:53:49
argv会给你任何壳放在那里;因为shell将它视为一个字节字符串,将其推回到终端。现在所有的通用终端都支持unicode,所以它应该可以正常工作。 – 2010-01-05 01:58:56