linux进程参考fork 和 execl
参考例程如下:
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<unistd.h> void task_2(void *param) { int i = 10; while(i) { printf("this is task 2 runing\n"); sleep(1); i--; } exit(0); } void main(void) { int i = 10; pid_t task_id = fork(); if(task_id == 0) //0是当前的新进程,子进程 { printf("child ret is %d\n", task_id); printf("child id is %d, parent id is %d", getpid(), getppid()); //ececl("/dev/ls", "-l", NULL); //第一个参数是个路径,程序名,而不是函数,思考的方向错误 execl("/bin/ls", "ls", "-a", NULL); if(execl("/bin/ls", "ls", "-a", NULL) == -1) { perror("execl error"); exit(0); } } else if(task_id == -1) { perror("fork error"); return -1; } else if(task_id > 0) //父进程 { printf("parent ret is %d\n", task_id); printf("parent id is %d, parent+parent id is %d", getpid(), getppid()); waitpid(task_id, NULL, 0); printf("chind is over\n"); } while(i) { printf("this is task 1 runing\n"); sleep(1); i--; } }