当前位置: 首页 > wzjs >正文

企业网站建设的报价电商推广渠道有哪些

企业网站建设的报价,电商推广渠道有哪些,公司百度网站怎么做,大数据网站视频进程 程序:死的,只占用磁盘空间。 -----剧本 进程:活的,运行起来的程序,占用CPU,内存等系统资源。 ------戏 PCB进程控制块 ps aux 包含:进程ID 文件描述符表 进程工作目录位置 信号相关资源…

进程

程序:死的,只占用磁盘空间。 -----剧本

进程:活的,运行起来的程序,占用CPU,内存等系统资源。 ------戏

PCB进程控制块

 ps aux   包含:进程ID 文件描述符表 进程工作目录位置 信号相关资源信息 *umask掩码 用户id组id 进程状态 等等。       

本质是struct task_struct结构体

进程控制

fork函数(重中之重)

创建一个子进程,父子进程各自返回,父进程返回子进程pid,子进程返回0;

fork返回值:

         = 0 ,表示当前是子进程

        > 0 ,表示当前是父进程

        -1 , 表示创建失败

#include<unistd.h>
pid_t fork(void);

循环创建N个子进程模型#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>int main(int argc , char* argv[])
{int i;pid_t pid;for( i = 0 ; i < 5 ; i++){if(fork() == 0){break;}}if(i == 5){printf("I am parent\n");}else{printf("I am %dth child\n" , i);}return 0;
}

 getpid   getppid

getpid 获取自己的PID

getppid 获取父进程的PID

父子进程相同:刚fork后,data段,text段,堆,栈,环境变量,全局变量,宿主目录位置,进程工作目录位置,信号处理方式

父子进程不同:进程id,返回值,各自父进程,进程创建时间,闹钟,未决信号集

进程共享

全局变量------父子进程间遵循读时共享,写时复制的原则。理解:父子进程如果对全局变量进行写操作的时候,是先复制,然后在副本上修改。两份是不一样的副本。

父子进程是不共享全局变量的。

父子进程共享:1、文件描述符 2、mmap建立的映射区域(进程间通信) 

exec函数族

execl
int execl(const char*path , const char*arg,...)
execlp   p-->PATH

加载一个进程,借助PATH环境变量

int execlp(const char*file , const char*arg,...)
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>int main(int argc , char*argv[])
{pid_t pid = fork();if(pid == 0){execlp("ls" , "ls" , "-l" , "-h" , NULL);perror("exec error");exit(1);}else{printf("I am parent:%d\n" , getpid());}return 0 ;
}

这里execlp中的第一个参数是可执行的文件名,然后第二个参数相当于argv[0],也是可执行的程序文件名,所以这里有两个ls。最后要加上NULL。

execlp函数只有在出现错误的时候才会返回值,返回-1。正确的时候不会有返回值。

将当前系统中的进程信息打印到文件中

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>int main(int argc , char*argv[])
{    int fd ;fd = open("psout" , O_WRONLY|O_CREAT|O_TRUNC , 0644);if(fd < 0){perror("open error");exit(1);}else{dup2(fd , STDOUT_FILENO);execlp("ps" , "ps" , "aux" ,NULL);perror("execlp error");exit(1);}return 0;
}

exel函数组一旦调用成功即执行新的程序,不返回 , 只有失败才会返回-1 ,所以通常直接在exel之后perror错误,不需要判断if。

回收子进程

孤儿进程:父进程先于子进程结束,子进程成为孤儿进程。子进程的父进程成为init进程,称为init进程领养孤儿进程。 所有孤儿进程都会跑到init底下,成为init的子进程。

僵尸进程:进程终止,父进程尚未回收,子进程残留资源PCB放于内核中,编程僵尸进程。kill 命令对其无效。

wait函数

父进程调用wait函数可以阻塞回收任意子进程终止信息。

pid_t wait(int* status);
参数:传出参数,回收进程的状态
返回值:回收进程的pid 
失败 -1

1、阻塞等待子进程退出

2、回收子进程残留pcb资源

3、获取子进程结束状态(退出原因)

WIFEXITED(status)-->为真-->调用WEXITSTATUS(status) -->得到子进程退出值
WIFSIGNALED(status)-->为真,异常退出-->WTERMSIG(status)-->得到导致子进程异常终止的信号编号
if(pid == 0){printf("child , my pid = %d ; going to sleep 5s\n",getpid()) ;sleep(5);printf("-------child die\n");}else if(pid > 0){wpid = wait(&status);if(wpid == -1){perror("wait error");exit(1);}if(WIFEXITED(status)){  //如果为真 , 进程正常结束WEXITSTATUS(status); //如果上述宏为真,获取使进程终止的信号。}if(WIFSIGNALED(status))  // 如果为真,进程终止异常{printf("kill by %d\n", WTERMSIG(status)); //获取终止进程的信号编号。}printf("-----parent wait finish:%d\n " , wpid);}else{perror("fork");exit(1);}return 0 ;

waitpid函数

指定某一个进程进行回收,可以设置非阻塞。 

返回值 > 0 :表示成功回收的子进程pid

返回值 = 0:函数调用时,参数三指定了WNOHANG,并且,没有子进程结束

返回值 = -1:回收失败,error

pid_t waitpid(pit_t pid , int* status , int options)
pit_t pid: 指定回收pid  >0:待回收的子进程   0:同组的子进程  -1:任意子进程
status:传出参数 保留回收状态
options:WNOHANG 指定回收方式为非阻塞
返回值
成功 pid
失败  -1

一次wait/waitpid函数,只能回收一个子进程。想回收多个,while循环。

while((wpid = waitpid(-1 , NULL, WNOHANG))!=-1)//非阻塞的情况
{if(wpid > 0 ){printf("wait child: %d\n" , wpid);}else if(wpid == 0){sleep(1);continue;}
}while((wpid = waitpid(-1,NULL,0))){   //阻塞的情况回收子进程printf("wait child:%d\n" , wpid);    
}

小结:父进程fork 3个子进程 , 三个子进程一个ps, 其他两个调用自己的程序 , 父进程使用waitpid对子进程进行回收。(自己写的,可以运行)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>
#include<sys/wait.h>int main(int argc , char *argv[])
{pid_t pid , temp[3] ,wpid;int i ;for(i = 0 ; i < 3 ; i++){pid = fork();if(pid > 0){temp[i] = pid;}if(pid == 0){if(i==0){execlp("ps" , "ps" , NULL);perror("exec perror");exit(1);}else if(i == 1){execl("./" , "fork" , NULL);}else if(i==2){execl("./Getpid" , "Getpid" , NULL);}break;}}if(i == 3){int b ;for(b = 0 ; b < 3 ; b++){wpid = waitpid(temp[b] , NULL, 0);if(wpid != -1 ){printf("kill %dth child: %d\n" , b , wpid);}else{perror("wait error");}}}return 0 ;
}


文章转载自:

http://fddSNx59.kmqjx.cn
http://kkVCN6Yo.kmqjx.cn
http://qRQP1ZFx.kmqjx.cn
http://nD3aPHci.kmqjx.cn
http://8A5UoDHK.kmqjx.cn
http://oE1s4gGj.kmqjx.cn
http://iNPqSVQk.kmqjx.cn
http://1QNsifKb.kmqjx.cn
http://hT1b3RGT.kmqjx.cn
http://xNLe8RFD.kmqjx.cn
http://SkJzJcCj.kmqjx.cn
http://5qKp25VQ.kmqjx.cn
http://j33BPkoU.kmqjx.cn
http://8SAJJBAW.kmqjx.cn
http://bZr0FxOV.kmqjx.cn
http://dWGLJSVi.kmqjx.cn
http://gVl8He7L.kmqjx.cn
http://AN2rz40I.kmqjx.cn
http://iOuQp4R9.kmqjx.cn
http://wxVvajZl.kmqjx.cn
http://SXuT9fSF.kmqjx.cn
http://IxwNhlS8.kmqjx.cn
http://u5KxRrKR.kmqjx.cn
http://f30tl6or.kmqjx.cn
http://aRK2MJta.kmqjx.cn
http://VorGdsYx.kmqjx.cn
http://JOHAU44V.kmqjx.cn
http://FKeFY9Hr.kmqjx.cn
http://7THhnp9a.kmqjx.cn
http://hZaB0cAK.kmqjx.cn
http://www.dtcms.com/wzjs/692742.html

相关文章:

  • 网站建设难点自助网站建设方法
  • 男女做暧暧视频免费网站会员管理系统app免费版
  • 建网站非要做外链吗四线城市做网站建设怎么样
  • 微网站开发外包南京网站定制
  • 天门市网站建设哈尔滨网站建设企业
  • 湖州网站建设有哪些做搜狗pc网站优化排
  • 毕业室内设计代做网站怎么做公司的中英文网站
  • 黄冈做网站的公司哪家好东莞专业网站建设服务
  • 网站建设业务的延伸性好听顺口的公司名字
  • 深圳罗湖网站设计公司价格建行app官方下载
  • 备案的网站名wordpress 七牛 图床
  • 网站建设工单系统郑州一建拖欠工资
  • 建设企业网站技术解决方案网络营销工具的定义
  • 下载 公司网站 程序 需要ftp权限哪个网站做免费小程序
  • 知了网站后台子网站用织梦系统
  • 厦门网站快速排名优化中国进出口贸易官网
  • 网站制作代理加盟购门户网站系统
  • 网站备案注意什么小程序外包公司
  • 泉州手机网站建设公司哪家好淄博品牌策划公司
  • 重庆巨能建设集团网站北京的网站开发公司
  • 用wix做网站需要备案吗免费域名的网站有哪些
  • 找谁做公司网站word 添加 wordpress
  • 什么网站百度的收录高南宁市网络公司地址
  • 欧美做暧网站品牌建设 网站
  • wordpress 只能做博客seo搜索引擎优化工程师招聘
  • 中国网站开发公司排名搭建一个平台要多少钱
  • 珠海工商年检到哪个网站做织梦 网站源码
  • 免费建网站可以找哪家英文网站青岛正规公司网站建设公司
  • 召开网站建设培训会网站前端设计理念
  • 北京做环评备案的网站公司网站布局