-1

マルチプロセッサと共有メモリを使用して生産者と消費者の割り当てがあります

execl() を使用して別のファイルを実行する方法について質問があります

私のプログラムでは、3つのcファイルで構成されます

parent.c : 親プロセス

producer.c : プロデューサー プロセス

consumer.c : コンシューマ プロセス

ファイルをコンパイルした後->名前の親、プロデューサー、消費者

すべてのファイルを配置したディレクトリを配置すると、次のようになります: /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 に答える