マルチプロセッサと共有メモリを使用して生産者と消費者の割り当てがあります
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
パスまたは実行コマンドの間に何か問題があることを知っています
これを手伝ってもらえますか