fork(), sleep() и pipe(int * fd) в Mac OS X

#c #linux #macos #fork

#c #linux #macos #fork

Вопрос:

Я посещаю курс под названием «Операционные системы», и мы изучаем эти функции. У меня Mac, и я хочу знать, работают ли эти функции на Mac, или мне нужно установить Linux. Если я не могу этого сделать на Mac, какой дистрибутив Linux мне следует установить? (Их так много, я не знаю, какой из них взять).

Ответ №1:

Ваш прототип для pipe() неверен, но все три функции являются частью POSIX. Поскольку OS X — это операционная система POSIX, она поддерживает все три. Обратите внимание, что вам потребуется установить инструменты разработчика Apple, чтобы иметь доступ к компилятору и соответствующим заголовкам и тому подобное Для создания программного обеспечения, которое их использует.

Комментарии:

1. Прототип операционной системы для pipe() является идеально обрезанным.

2. Это может иметь тот же конечный результат, но во многих ссылках, включая Apple , используется немного другой.

3. Объявления int pipe(int *fd); и int pipe(int filedes[2]); имеют идентичную семантику (изменение с int [2] на int * таким образом, ничем не отличается от изменения с filedes на fd или даже полного исключения имени параметра). Ни одно из них ни в коем случае не является неправильным. Худшее, в чем вы можете обвинить формулировку OPs, — это нетрадиционность.

Ответ №2:

Я только что изучал операционные системы, и поскольку курс посвящен UNIX, если бы вы были на Windows, я бы рекомендовал установить Linux просто ради самого курса. Поскольку вы используете Mac, это не должно сильно отличаться. Кстати, большинство дистрибутивов имеют текущие версии, так что вы можете просто загрузить Linux для назначения или чего-то еще, если хотите. Подойдет любой популярный дистрибутив.