进程控制
getpid获取进程pid号
函 数 详 情 | getpid()----获取一个进程的pid号 原型:pid_t getpid(void); //补充: pid_t 这个类型是int 返回值:成功:当前进程的ID号 失败:负数 获取当前进程的ID 进程控制相关的头文件: #include <sys/types.h> #include <unistd.h> #include <stdlib.h> #include <sys/wait.h> |
示 例 | pid=getpid(); |
getppid获取当前进程的父进程ID号
函 数 详 情 | getppid() ---获得当前进程父进程的ID号 原型:pid_t getppid(void) 返回值:成功 返回当前父进程的ID号 |
示 例 | //返回当前父进程的ID号 ppid=getppid(); |
system打开另外一个进程
函 数 详 情 | 函数:system() 功能:在一个运行进程中打开另外一个进程,运行完成之后回到原来进程继续执行。 函数:运行进程 原型:int system(const char *string) 参数:const char *string ---->表示待执行的命令 比如“ls -l” 功能:函数system()会调用fork()函数产生子进程,由于进程调用string 字符串命令,执行命令完成后可以重新返回。--->可执行程序,例如:"./a.out" |
示 例 | int a; a = system("./a.out") printf("%d\r\n",a); //调用一下system函数,打开pwd进程,再打开ls进程 a=system("pwd"); printf("a = %d\r\n",a); b=system("ls -l"); printf("b = %d\r\n",b); |
execl替换进程
函 数 详 情 | 函数:替换进程exec()函数---相当于一个函数族,函数名中出现了l、v、e、p结尾 原型:int execl(const char *path,char *arg....) 参数:const char *path ---->表示执行程序的路径 char *arg ---->表示传进来一个参数--命令,还需要加上NULL 返回值:成功的,不会返回,也就说,execl()之后的代码不会执行。 失败,返回-1 功能:用参数指定的进程替换当前的进程 功能:用新进程替换当前进程的程序---注意:进程的ID不变,变化的只有执行代码发生变化。 |
示 例 | //调用一个execl函数--替换进程函数 execl("./test","./test",NULL); |
fork创建子进程
函 数 详 情 | 创建进程函数:pid_t fork(void); 目的:创建子进程。 返回值:在父进程中,用fork返回新创建子进程的进程ID 在子进程中,fork函数返回值为0 失败的话返回 负值 |
示 例 | //调用fork函数 ret = fork();//子进程 if(ret < 0) { printf("for error\r\n"); return -1; } else if(ret == 0) { //子进程代码实现 printf("world is ok\r\n"); } else if(ret > 0) { //父进程代码实现 printf("parents if ok\r\n"); } |
sleep休眠函数
函 数 详 情 | sleep() 原型:unsigned int sleep(unsigned int seconds); 参数:unsigned int seconds --> 代表休眠的秒数(s) 功能:让调用该函数的进程等待多少秒 usleep() 原型:int usleep(useconds_t usec); 参数:usenconds_t usec ---->表示休眠的微秒数 功能:让调用该函数的进程等待多少微秒 |
示 例 | sleep(1); |
vfork创建子进程
函 数 详 情 | 原型:pid_t vfork(void) 返回值:和fork()函数一样,成功,子进程返回0 功能:创建一个子进程,并阻塞父进程的运行直到子进程运行结束 |
示 例 | pid_t ret; ret = vfork(); if(ret < 0) { printf("creat child process failed\r\n"); return -1; } if(ret == 0) { //子进程 printf("Child\r\n"); sleep(1);//阻塞也不会进入父进程 printf("child2\r\n"); } else { //父进程 printf("parent\r\n"); } |
exit退出进程
函 数 详 情 | 退出函数:exit() 原型:void exit(int status) 参数:int status --->用于返回数据给父进程,一般填写为0 功能:exit()函数正常结束进程,并把参数返回给父进程,会将进程缓冲区的内容全部写回并关闭文件 原型:void _exit(int status) 参数:int status --->用于返回数据给父进程,一般填写为0 功能:_exit()正常终止目前正在执行的进程,但是不会将缓存区的内容写回。 |
示 例 | exit(0); |
wait等待子进程结束
函 数 详 情 | 头文件 #include <sys/types.h> #include <sys/wait.h> 原型:pid_t wait(int *status) 参数:int *status ---> 用于接收子进程退出时候返回给父进程数据 返回值:子进程的PID 功能:wait()会暂时停止目前执行的进程,直到接收到子进程结束的信号(exit)。 如果调用wait()函数,子进程已经结束,返回给父进程子进程结束的状态信息。如果说不知道子进程结束的状态,设置为NULL |
示 例 | //调用一下对应的wait函数 ret=wait(NULL); |
waitpid等待特定子进程结束
函 数 详 情 | 原型:pid_t waitpid(pid_t pid,int *status,int options); 参数:pid_t pid --->指定等待的进程的PID号 如果pid = -1 等待任何子进程结束 相当于wait() 如果pid > 0 对应等待相应子进程结束 如果 pid < -1 的时候,去绝对值 例如: -10 起始就是等待 10号进程 int options 表示选项参数,一般设置为0 功能:和wait函数基本一致,但是可以等待指定的进程 |
示 例 | waitpid(pid,int *statue,0) |
小广告:
1.好好学习,天天向上
2.出售赚钱秘籍,仅售100份,先到先得。如果想要购买请先关注博主,然后私信购买。
3.下期预售商品关键字:如何找女朋友?不接受预购,可以先关注博主,等待商品出售。