Платформо-независимый метод для доступа к командной строке в C?
На окнах программист может сделать что-то вроде: system("ls > outputFile.txt")
Существует ли независимый от платформы способ доступа к командной строке или, по крайней мере, способ определить, на какой платформе выполняется программа (потому что вызовы для одной и той же функциональности сильно различаются)?
2 ответа
system(3)
функция стандартная ANSI C, она уже не зависит от платформы. Любая соответствующая реализация C позволит вам вызвать ее для запуска системного приложения по умолчанию для командной строки / процессора / оболочки. Конечно, реальные программы, которые вы можете запустить, будут различаться в зависимости от системы (например, dir
работает только на Windows, пока ls
обычно работает на Unix-подобных платформах).
system()
сама по себе является стандартной функцией C, определенной в stdlib.h
, То, как он интерпретирует свой аргумент, не является стандартным (например, ls
в UNIX, dir
в Windows/DOS и т. д.). Если вы действительно спрашиваете, существует ли независимый от платформы способ составления списка файлов в каталоге, ответ (к сожалению) нет. Некоторые библиотеки предоставляют переносимые (до некоторой степени) реализации, в первую очередь Boost: Как я могу получить список файлов в каталоге, используя C или C++?