0

それぞれの子プロセスが 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 を使用できないことをどこかで読みました。これは、非同期の安全な関数と関係があります。助けていただけますか?

4

1 に答える 1