Как использовать execl() для выполнения другой программы

У меня есть задание на производителя-потребителя с использованием многопроцессорной и общей памяти

У меня есть вопрос, как использовать execl() для выполнения другого файла

В моей программе будет 3 файла c

parent.c: родительский процесс

product.c: процесс производителя

consumer.c: потребительский процесс

После компиляции файла -> имя родителя, производителя, потребителя

Если я поставлю каталог, то я поставлю все файлы: /home/assign

в parent.c у меня есть код для вызова производителя и потребителя по вилке, как это

if (fork() == 0) {  /* in producer process */
      /* Replace this program with producer program */

      /*idea : execl => path of execution of the program*/

      if (execl("/home/assign", "producer", NULL) == -1) {
         perror("execl failed for producer");
         cleanup_on_exit();   /* clean up before exiting */
         exit(3);
         }
       }

if (fork() == 0) {  /* in consumer process */
      /* Replace this program with the consumer program */
      if (execl("/home/assign", "consumer", NULL) == -1) {
         perror("execl failed for consumer");
         cleanup_on_exit();  /* clean up before exiting */
         exit(3);
         }
      }

wait(NULL);
wait(NULL);

Однако, когда я запускаю программу через команду Linux./parent

Это показывает результат, как это

execl failed for producer
execl failed for consumer

который я знаю, что что-то не так между пути или выполнения команды

Вы можете помочь с этим

1 ответ

if (execl("/home/assign/producer", "producer", NULL) == -1) {и аналогичные для потребителя. - wildplasser

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