linux下多進程/多線程編程總結

1.fork()實現創建一個子進程,pthread_create()實現創建一個線程.

2.vfork()也創建一個子進程,但父進程將掛起,直到子進程調用exec()/exit()的函數

3.sem_init(),sem_wait(),sem_post()函數暫時無法用在多進程中,只支持多線程操作

4.其他IPC可以用在多進程和多線程中



linux下線程pthread編譯時爲什麼要加lpthread

lpthread是表示要連接到pthread的庫是這裏省略的lib,你應該可以找到共享庫libpthread.so的

因爲pthread編程用到的函數在pthread庫裏面,就像你使用pow等數學計算函數,需要用到math.h

需要 -lm




int a=7;
main()
{
}
編譯時用命令gcc test.c -lpthread,生成可執行文件a.out。在shell中輸入./a.out時,系統要做的工作有哪些?仍是fork()+execve()嗎?編譯時加與不加-lpthread,在執行時究竟有哪些具體區別呢?
>>仍是fork()+execve()嗎?


>>編譯時加與不加-lpthread,在執行時究竟有哪些具體區別呢?
區別在於 ELF解析器,而不是內核。 內核execve返回到用戶空間時,執行的是interpreter;如果有鏈接到libpthread庫,interpreter程序會先加載這個庫,然後再回到a.out去執行


關於execve:

http://blog.csdn.net/fisher_jiang/article/details/5608399

http://blog.tianya.cn/blogger/post_read.asp?BlogID=1285060&PostID=12814565

http://blog.sina.com.cn/s/blog_7f66cc1a0100rbqq.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章