1.fork()實現創建一個子進程,pthread_create()實現創建一個線程.
2.vfork()也創建一個子進程,但父進程將掛起,直到子進程調用exec()/exit()的函數
3.sem_init(),sem_wait(),sem_post()函數暫時無法用在多進程中,只支持多線程操作
4.其他IPC可以用在多進程和多線程中
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,在執行時究竟有哪些具體區別呢? |
對
>>編譯時加與不加-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