それぞれの子プロセスが exec システム コールを使用してイメージを変更する前に、子プロセスにスレッドを作成したいと考えています。ただし、一見、pthread_create 呼び出しは見落とされています。
pthread_t thread;
pthread_attr_t attribute;
pthread_attr_init(&attribute);
pthread_attr_setdetachstate(&attribute, PTHREAD_CREATE_DETACHED);
pid_t cid = fork();
if(cid == 0) //CHILD Process
{
switch(x->option)
{
case 1: pthread_create(&thread, &attribute, compressShow, NULL);
execl("/home/aamir/Lab/ass3/compression", "compression", source, destination, NULL);
cout<<"Execution failed."<<endl; break; //This segment will execute if exec fails.
}
else //PARENT Process
{
wait(0); //Prevents termination of original main until forked exec completes execution
pthread_cancel(thread);
}
スレッドは基本的に、「.」を出力することを目的とした単なる進行状況表示です。(ドット) 分岐した子と一致します。
exec 呼び出しを削除すると、スレッドは実行されます。私はグーグルで検索し、フォークと実行の間で pthread_create を使用できないことをどこかで読みました。これは、非同期の安全な関数と関係があります。助けていただけますか?