Как использовать 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