私はLinuxでのプログラミングに不慣れで、fork()関数とexec関数がどのように機能するかを理解しようとしていました。自分で簡単にするために、単純なDummy実行可能ファイル(gcc -o Dummy.exe ...を使用)を作成し、fork関数を呼び出して、作成したDummy.exe実行可能ファイルで子を置き換えることができるようにしました。
私が遭遇している問題は、コードを実行すると、Dummy.exeの内容が表示されることですが、それ以降は何も表示されません。つまり、親プロセスが終了することはありません。
コードEx1.cppを実行すると、次の出力が得られます。
Program is Running
--- ****** ---
Ended
me@mdev>
プログラムを終了させる唯一の方法は、リターンキーを押すことです。Endedという単語の後に空白行が表示されます。
これが私のEx1.cppのコードです
#include <iostream>
using namespace std;
int main()
{
pid_t retVal;
int newStatus;
switch(retVal = fork())
{
case -1:
cout<<"Error occured with fork"<<endl;
break;
case 0:
cout<<"Child forked"<<endl;
newStatus = execl("Dummy.exe","Dummy.exe", NULL);
break;
default:
cout<<"Parent has a new child: "<<retVal<<endl;
}
cout<<"Ended ..."<<endl;
return 0;
}
私のDummy.cppコードは以下のとおりです。
#include <iostream>
using namespace std;
int main()
{
cout<<"Program is Running"<<endl;
cout<<"--- ****** ---"<<endl;
cout<<"Ended"<<endl;
return 0;
}
私のバックグラウンドはWindows開発であり、これはすべて私にとって新しいことです。ご協力に感謝します。