Прочтите документацию по execl (3)и execve (2 )(, которые вызываютсяexecl
). Они могут потерпеть неудачу (, и это единственный способ вернуться; в случае успеха эти функции не возвращаются, так как они изменяют все виртуальное адресное пространство своего процесса ).
Итак, код (с использованием perror (3)):
execl("/home/amir/Desktop/OSAssignment/script.sh","script.sh",NULL);
perror("execl script.sh");
У вас должен быть исполняемый скрипт, и вы должны запустить его с шебангом . Его первая строка должна быть#!/bin/sh
Пожалуйста, внимательно прочитайте документацию по каждой используемой вами функции.
Сценарий, который выполняется без явного интерпретатора, должен быть исполняемым и иметь правильную строку #!
-.
Если строки#!
-нет или она не является исполняемой, необходимо выполнить скрипт с помощью интерпретатора, как в
sh /path/to/script.sh
Вы также должны проверить код возврата из execl()
, чтобы убедиться, что вызов не удался. Если это не удалось, вы можете использовать perror()
для печати сообщения об ошибке. См. руководство для perror
вашей системы.