1

Я начинаю с модуля «Операционные системы», и эти вопросы действительно застали меня врасплох. Эти вопросы не имеют решений.

(a) В Windows запустите оболочку командной строки, например. CMD. Предполагая, что вы находитесь в каталоге с некоторыми стандартными типами файлов документов, например. .doc, .pdf, .ppt и т. д. Просто попробуйте ввести само имя файла.

Для уточнения, этот вопрос предполагает, что в той же директории есть файл PDF, например U5-UnixProcess.pdf (подойдет любой файл PDF), и у вас есть программа чтения PDF. В следующем примере показано, как запустить процесс из документа: c:> U5-UnixProcess.pdf

Что просходит? Какая программа запущена? Это файл PDF работает?

(б) Объясните, в чем смысл такой функции в Windows.

(c) Почему Windows знает, что делать с файлом? (Подсказка: используйте правую кнопку мыши).

(d) Unix имеет связанную особенность. Прочитайте справочную страницу для execve и объясните функцию и как вы можете ее использовать?

Вот мои ответы, основанные на моем понимании. Я пытался найти ответы, но, похоже, нет источников, объясняющих такие деликатные вопросы.

ответы

а) Когда мы вводим имя файла, оболочка командной строки будет искать имя файла в текущем каталоге. Если он не найден, он будет искать каталоги, перечисленные в переменной окружения PATH. Как только он найдет файл, он будет искать расширение файла, чтобы узнать, какое приложение обрабатывает тип файла, который будет считывателем PDF, если расширение файла .pdf. После этого он запустит приложение как новый процесс и передаст ему имя файла.

Во всем этом процессе выполняется приложение, которое может обрабатывать файл, а не сам файл.

б) Оболочка командной строки позволяет пользователям иметь доступ к большему количеству команд, кроме того, что обеспечивает их графический пользовательский интерфейс, например, просмотр скрытых файлов.

c) Вы можете установить приложение по умолчанию, которое будет использоваться при открытии файла, чтобы сообщить Windows, что делать с файлом. Если нет приложений, которые могут запустить файл, файл не будет открыт.

г) Я в основном только что скопировал часть TutorialsPoint для этого. Не очень понимаю применение "как это использовать" здесь.

execve() - это системный вызов, который преобразует вызывающий процесс в новый процесс и имеет сигнатуру int execve(const char *path, char *const argv[], char *const envp[]);

execve() выполняет программу, указанную путем. путь должен быть либо двоичным исполняемым файлом, либо скриптом, начинающимся со строки вида "#! переводчик [arg] ". В последнем случае интерпретатор должен быть допустимым путевым именем для исполняемого файла, который сам по себе не является скриптом, который будет вызываться как имя файла интерпретатора [arg]. argv - это массив строк аргументов, передаваемых новой программе. envp - это массив строк, обычно в форме ключ = значение, которые передаются в качестве среды новой программе. И argv, и envp должны заканчиваться нулевым указателем. Вектор аргумента и окружение могут быть доступны основной функции вызываемой программы, если она определена как int main(int argc, char *argv[], char *envp[]) .

Может ли кто-нибудь укрепить мое понимание этих тем и, возможно, направить меня к источникам, где я могу прочитать по этим темам?

1 ответ1

1

а) Кажется, у тебя есть это
б) Я бы добавил, что двойной щелчок файла в проводнике (что и делают большинство пользователей Windows) очень похож на ввод имени файла в командной строке. Это позволяет неопытным пользователям работать с файлами, даже если они не знают о программе, необходимой для их работы, и им не придется выбирать, какую программу использовать, если они не знают, как это сделать.
в) здесь нет проблем
г) Я думаю, что они получают здесь то, что execve позволяет запускать скрипт без необходимости знать, как его запускать. Например, программа может запускать программу Python, не зная, что ей нужен интерпретатор Python. (конец ответа)

Разница в том, что он получает информацию о том, как выполнить файл, из заголовка файла, а не из таблицы "приложения по умолчанию" и сопоставляя расширение имени файла. Это создает дополнительное преимущество для создателя файла, так как они сами решают, как будет работать файл, а не операционная система. Кроме того, расширение не имеет значения таким образом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .