fork的应用:
#include "stdio.h" #include "string.h" #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #define Max(a,b) ({int a1=a,b1=b; a1>b1?a1:b1;}) int main() { int i,j,k,*q; char *p="abc"; int pids[10]; int pid; q=pids; //printf("%d ", getpid()); //sleep (3); for(i=0;i<3;i++) { printf("for-%d ",i); pid=fork(); if(pid) { *(q++) = pid; }else if(pid == 0){ sleep(5); printf("child:%d ", getpid()); break; } } if(pid>0) { for(i=0;i<3;i++) { // waitpid(pids[i], NULL, 0); printf("parent: %d, %d ", getpid(),pids[i]); } } printf("song "); }
没有waitpid时输出:
有waitpid时:
pthread_create 函数示例:
#include "stdio.h" #include "string.h" #include "pthread.h" void *thr_fn(void *arg) { sleep(15); printf("sub :%d ", pthread_self()); return NULL; } int main() { pthread_t err; pthread_t ntid; err = pthread_create(&ntid, NULL, thr_fn, NULL); if (err != 0) printf("can't create thread: %s ", strerror(err)); //pthread_join(ntid,NULL); printf("main :%d ", pthread_self()); sleep(16); return 0; }