-1

我有一个使用多处理器和共享内存的生产者-消费者任务

我有一个问题如何使用 execl() 执行另一个文件

在我的程序中将包含 3 个 c 文件

parent.c : 父进程

producer.c :生产者进程

consumer.c :消费者进程

在我编译文件后 -> 名称 parent,producer,consumer

如果我放目录,我放的所有文件都是:/home/assign

在 parent.c 我有一个代码可以像这样通过 fork 调用生产者和消费者

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

我知道路径或执行命令之间有问题

你能帮忙吗

4

1 回答 1

-2

if (execl("/home/assign/producer", "producer", NULL) == -1) {,对于消费者来说也是类似的。– 野生动物

于 2016-11-04T12:58:03.840 回答