我已經完成了pthread_create(3)
的strace(1)
。它間接調用了clone(2)
系統調用。我應該在clone(2)中設置哪些標誌,以便它與pthread_create()相同?
還有將設置下列標誌:(我使用的i386 GNU/Linux操作系統(薄荷13))
CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD | CLONE_SYSVSEM | CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID
我好這一切的標誌。但我的問題是爲什麼pthread_create()
設置爲CLONE_CHILD_CLEARTID
標誌?根據我的知識,CLONE_CHILD_SETTID
會在子內存中的位置ctid處設置子線程ID,並且CLONE_CHILD_CLEARTID
將在子進程退出時將其清除。
(因爲沒有CLONE_CHILD_SETTID
標誌設置,那麼爲什麼CLONE_CHILD_CLEARTID
?)
是否真的需要?當我們想要使用clone(2)
實現pthread_create()
的功能時,我們需要設置什麼樣的理想標誌?
初學者在這個領域。