Платформо-независимый метод для доступа к командной строке в 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++?

Другие вопросы по тегам