在C中访问命令行的平台无关方法?

时间:2014-01-15 20:13:02

标签: c windows unix platform-independent

在Windows上,程序员可以执行以下操作:system("ls > outputFile.txt")

是否有一种独立于平台的方式来访问命令行,或者至少是一种确定正在执行程序的平台的方法(因为对相同功能的调用有很大的不同)?

enter image description here

2 个答案:

答案 0 :(得分:1)

system()本身是stdlib.h中定义的标准C函数。但是,它解释其参数的方式不是标准的(例如,UNIX中的ls,Windows / DOS中的dir等)。如果您真的在询问是否存在一种独立于平台的方式来列出目录中的文件,那么(不幸的是)答案是否定的。有些库确实提供了 portable (在某种程度上)实现,最值得注意的是Boost:How can I get the list of files in a directory using C or C++?

答案 1 :(得分:1)

system(3)函数是标准ANSI C,它已经与平台无关。任何符合C的实现都允许您调用它来运行系统默认的命令行处理器/ shell应用程序。当然,您可以运行的实际程序因系统而异(例如dir仅适用于Windows,而ls通常适用于类Unix平台)。