int launch(int argc, char *argv[]) { printf("Parsed:]\n"); for(int i=0; i<argc; i++) printf("\t%s\n",argv[i]); printf("DONE\n\n"); pid_t child; child = fork(); if (child == -1){ //Fail int k; logerror(k = 10, "Child", "Failed Fork"); _exit(EXIT_FAILURE); return -1; //return -1 on fail: Child } else if (child == 0){ //Success childprocess(argv); //call child execute } else{ //Parent process parentprocess(); //call parent wait } return 0; //return on normal exit }
int main(int argc,const char * argv[]){ int n = atoi(argv[1]);//传入参数 n int t,k; mainpid=getpid(); for(t=0;t<n;t++){ k = random(10);// 时间间隔随机数 k if(fork()==0){ childprocess(k); } } for(t=0;t<n-3;t++){ wait(&status); } printpid=wait(&status); printf("倒数第三个结束的进程是:%d\n",printpid); wait(&status); wait(&status); printf("over\n"); exit(0); }
main() { char filename[20],buff[1000]; int fd,n,i,j,array[100],m=1; printf("Enter filename:"); scanf("%s",filename); fd=open(filename,O_RDONLY); n=read(fd,buff,1000); for(i=0;i<100;i++) {array[i]=0;} i=0; for(j=0;j<n;) { if(buff[j]!=' ') { switch(buff[j]) { case '0': array[i]=array[i]*10; break; case '1': array[i]=array[i]*10+1; break; case '2': array[i]=array[i]*10+2; break; case '3': array[i]=array[i]*10+3; break; case '4': array[i]=array[i]*10+4; break; case '5': array[i]=array[i]*10+5; break; case '6': array[i]=array[i]*10+6; break; case '7': array[i]=array[i]*10+7; break; case '8': array[i]=array[i]*10+8; break; case '9': array[i]=array[i]*10+9; break; } } else { m++; i++; } j++; } pid=fork(); if(pid==0) childprocess(m,array); else parentprocess(m,array); close(fd); }