【发布时间】:2017-05-09 15:17:16
【问题描述】:
我正在做一个练习,我必须将文件传递到管道中,使用 exec sort 对文件进行排序并打印它。 我的问题是结果并不完全符合我的要求。 我的 Infile 数据是这个。
abcdefg
123456
XXXXXX
01010101
当我打电话给execlp("sort", "sort",(char *)0); 并读取管道时,我得到这个输出:
01010101
123456
abcdefg
XXXXXX
我真的希望打印出来:
01010101
123456
XXXXXX
abcdefg
我必须以某种方式告诉Sort 我希望首先显示大写字符。 execlp("sort", "sort",(char *)0); 的正确说法是什么?
【问题讨论】:
-
需要将
LC_COLLATE环境变量设置为"C"。 -
感谢您的快速回复!我在我的 main() 函数中写吗?可以举个例子吗?
-
阅读
putenv()函数的文档。 -
与其使用
putenv(),不如查看setenv(),之后可能需要使用unsetenv()来撤消更改。并使用getenv()当然检查LC_COLLATE是否已经设置。你也可以考虑execve()或execvpe()(如果你有后者)。