回收資源空間
子進程回收策略
1、wait阻塞回收:一般情況下父進程專門負責回收
2、waitpid非阻塞回收:搭配輪詢方式回收
3、不回收:子進程任務一致執行
4、異步回收:子進程結束后通知父進程進行回收
exec 函數族
三種調用外部程序的方式
#include <stdio.h>
#include <unistd.h>int main()
{char *arg[] = {"ls","-l",NULL};execv("/bin/ls",arg);execlp("ls","ls","-l",NULL);execvp("ls",arg);return 0;
}
l :list,列表? ? ? p:path,路徑? ? ?e:env,環境變量? ? ?v:vector,容器
線程
什么是線程
線程是輕量級的進程,也可以實現多任務并發,由進程創建
線程的創建
進程創建線程時默認分配8M棧區空間,同一進程下的多個線程和進程共用堆區、數據區、文本區,線程是任務調度的最小單位
線程的調度
宏觀并行,微觀串行
線程的消亡
1、線程退出? ? 2、回收空間
進程和線程的區別
線程相關編程
創建、調度、消亡
線程的創建
創建線程
#include <stdio.h>
#include <pthread.h>void *task(void *arg)
{printf("I'm thread,tid = %ld\n",pthread_self());
}int main(int argc,const char *argv[])
{pthread_t tid;int ret = pthread_create(&tid,NULL,task,NULL);if(ret != 0){perror("thread error :");return -1;}while(1){}return 0;
}