私はスレッド、プロセス、execvなどにはとても新しいです。私は調査して、execvを実行すると呼び出しプロセスのスペースがかかることを発見しました。私はmainでスレッドを作成し、execvをスレッドの直後に呼び出すと(スレッドが終了する前ではなく、スレッドが作成された直後に)何が起こるのだろうかと思います。私はexecvがmainを置き換えることは知っていますが、これはスレッドを置き換えるか、スレッドが正常に実行して完了することを意味しますか?スレッドを作成した後でexecvを呼び出す
の小さな例私は聞いてるのよ:
int main(){
printf("hello from main!);
char *buffer = "some data";
if(pthread_creat(&mythreadpid, NULL, thread1, buffer){
printf("ERROR!!");
}
execv(...) //do execv here
}
void *thread1(void *buffer){
printf("calling from my thread!");
//do something else
}
は、私はこれをテストしていると私は私のスレッドとしての経験奇妙な行動は、私はこれはそれ
の理由があるかどうかを知りたいので、完了しませんでした
'execv'は、1つのスレッドだけでなく、プロセス全体を置き換えます。 – Barmar
メインとメインから作成したスレッドを置き換えますか? – unconditionalcoder
はい、現在のプロセスのすべてのメモリと状態は、環境とファイル記述子を除き、execによって上書きされます。 – Barmar