Учитывает ли execvp () логические операторы?

Поскольку вы сказали, что у вас возникли проблемы из-за того, что система была доступна только для чтения в однопользовательском режиме, загрузитесь в однопользовательский режим и сделайте

mount -uw /

Это сделает ваш диск не доступным только для чтения, но вам придется сделать это снова, если вы снова загрузитесь в однопользовательский режим. Затем попробуйте переместить папку var в папку /private и сделать ссылку на нее, используя

link -s /private/var /var
-2
11.05.2019, 13:40
1 ответ

Вызовы exec*()просто запускают программу и передают ей аргументы командной строки. Базовый системный вызов не знает, что должны означать аргументы, это зависит от запущенного процесса.

Вы можете использовать exec*()для запуска оболочки, совместимой с POSIX -, и передать ей эту командную строку, например. с execl("/bin/sh", "/bin/sh", "-c", "echo hello && mkdir testing", (char *) NULL).Тогда оболочка запустит mkdirтолько в том случае, если echoзавершится успешно.

Но так как ваше задание состояло в том, чтобы реализовать оболочку и оператор &&самостоятельно, выполнение этого путем вызова внешней, уже существующей оболочки, на самом деле не соответствует духу задания. Вы можете просто использовать какую-нибудь существующую оболочку для начала и не писать ни одной строки кода на C.

2
28.01.2020, 05:15

Теги

Похожие вопросы