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

江苏建设人才无纸化考核网站网页设计专业培训

江苏建设人才无纸化考核网站,网页设计专业培训,网络工程实施方案,wordpress postid目录 一、多进程引入 1.1、引入目的 1.2、进程的概念 1.3、进程的种类 1.4、进程号的概念 1.5、特殊进程 0号 1号 2号 孤儿 僵尸 1.6、进程的相关命令 1#xff09;查看进程信息的命令#xff1a;ps 跟不同的选项#xff0c;执行不同的状态 2查看进程信息的命令ps             跟不同的选项执行不同的状态 2top/htop        3ptree展示进程树可以显示进程的父子关系 4查看给定进程的进程号pidof 进程名 5kill向进程发送信号 1.7、进程的状态 二、 多进程编程 2.1fork进程的创建函数 2.2 进程号的获取   getpid  getppid 2.3进程的退出    exit   _exit 2.4 进程资源的回收        wait  waitpid 作业 一、多进程引入 1.1、引入目的 程序员写程序时一个程序可能由多个认为组成如果使用的时单线程或单任务那么当该任务执行阻塞时其他任务就无法执行必须等到该任务接触阻塞后才能执行其他任务。 多线程或多进程。可以解决同一个程序中多个任务并发执行的情况。 1.2、进程的概念 1进程时程序的一次执行过程 2进程是程序资源分配的基本单位系统会给每个进程分配4G的虚拟内存分为0--3G的用                户空间和3-4G的内核空间多个进程共享内核空间用户空间相互独立 3进程是一个动态的过程有生命周期的概念分为创建态、就绪态、运行态、阻塞态、死                亡态 4进程在内核空间中存储在一个名为task struct的结构体中(PCB) 进程描述符task_struct包含了描述一个进程所需的所有信息。 进程状态包括运行、就绪、阻塞等状态。 进程标识符如进程IDPID。 进程调度信息如优先级、调度策略等。 内存管理信息如虚拟地址空间、页表等。 文件系统信息如打开的文件、文件系统根目录等。 信号处理包括待处理信号和信号处理函数。 进程间通信如消息队列、共享内存等IPC机制相关信息。 时间和定时器如进程创建时间、CPU使用时间等。 线程信息在Linux中线程被视为轻量级进程也用task_struct表示。 5单核cpu处理多任务是一般使用的是时间片轮询机制 6进程宇程序的区别 程序时静态的是存储在磁盘上的二进制代码 进程是动态的有生命周期的 7进程的组成:进程控制块(PCB)、数据段、程序段 1.3、进程的种类 进程分为三大类交互进程、批处理进程、守护进程 1交互进程他是由shell控制用于直接跟用户进行交互的进程。例如:vim编辑器、文本编辑器 2批处理进程本质上维护了一个队列被放入队列中的进程会统一被调度。例如gcc编译器的一步到位的编译 3守护进程脱了了终端而存在的进程随着系统的启动而开始随着系统的结束而终止。例如:服务进程 1.4、进程号的概念         每个进程在系统中都有一个唯一的标识位用一个整数表示这就是该进程的进程号(PID) 1、PID(processID):当前进程的进程号 2、PPID(parent processID):当前进程的父进程的进程号 3、每个进程都是由其父进程进行拷贝赋值出来的 4、/proc目录中的每个数字都是现在正在执行的一个进程 1.5、特殊进程 0号 1号 2号 孤儿 僵尸 1、0号进程也称其为 idel进程他是操作系统启动后执行的第一个进程这个进程也叫空闲进程当没有其他进程执行时会默认执行该进程。1号进程和2号进程都是由0号进程创建出来的 2、1号进程也称init进程该进程由0号进程产生主要完成系统创建时一些软件硬件的初始化工作。当其他进程的父进程死亡后会托管其子进程 3、2号进程也称kthreadd该进程由0号进程产生也称为调度进程当某个就绪进程时间片轮到时该进程负责进程的调度工 4、孤儿进程当前进程的父进程死亡后但是当前进程还没有结束那么当前进程称为孤儿进程孤儿进程会由1号进程收养 5、僵尸进程:当前进程已经死亡但是其父进程没有为其收尸回收其进程的资源那么该进程为僵尸进程 1.6、进程的相关命令 1查看进程信息的命令ps             跟不同的选项执行不同的状态 ps -ef 显示进程之间的关系 UID         PID   PPID  C STIME TTY          TIME CMD root          1      0  0 七月25 ?     00:00:20 /sbin/init splash root          2      0  0 七月25 ?     00:00:00 [kthreadd] root          3      2  0 七月25 ?     00:00:00 [rcu_gp] root          4      2  0 七月25 ?     00:00:00 [rcu_par_gp] root          6      2  0 七月25 ?     00:00:00 [kworker/0:0H-kb] root          9      2  0 七月25 ?     00:00:00 [mm_percpu_wq] root         10      2  0 七月25 ?     00:00:06 [ksoftirqd/0] root         11      2  0 七月25 ?     00:01:11 [rcu_sched] UID用户ID PID当前进程的id号 PPID:当前进程的父进程PID号 C不用管 STIME、TIME创建时间 TTY如果该值为问号说明不依赖于终端而存在的进程 CMD进程名称 ps -ajx可显示进程的状态 PPID    PID   PGID    SID TTY       TPGID STAT   UID   TIME COMMAND      0      1            1        1      ?            -1 Ss      0   0:20 /sbin/init splash      0      2            0        0      ?            -1 S        0   0:00 [kthreadd]      2      3            0        0      ?            -1 I       0   0:00 [rcu_gp]      2      4            0        0      ?            -1 I       0   0:00 [rcu_par_gp]      2      6            0        0      ?            -1 I       0   0:00 [kworker/0:0H-kb] PPID:当前进程的父进程PID号 PID当前进程的id号 PGID组id号 SID会话组id STAT当前进程的状态 ps -aux可以查看资源使用情况 USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND root          1  0.0  0.2 160076  4676 ?        Ss   七月25   0:20 /sbin/init splash root          2  0.0  0.0      0     0 ?        S    七月25   0:00 [kthreadd] root          3  0.0  0.0      0     0 ?        I   七月25   0:00 [rcu_gp] root          4  0.0  0.0      0     0 ?        I   七月25   0:00 [rcu_par_gp] root          6  0.0  0.0      0     0 ?        I   七月25   0:00 [kworker/0:0H-kb] %CPUcpu的占用率 %MEM 内存的占用率 2top/htop        top动态显示资源使用情况 top - 11:51:17 up 5 days, 13:55,  1 user,  load average: 0.01, 0.02, 0.00 任务: 327 total,   3 running, 260 sleeping,   0 stopped,   0 zombie %Cpu(s):  3.5 us,  1.8 sy,  0.0 ni, 94.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st KiB Mem :  2005964 total,    67820 free,  1168168 used,   769976 buff/cache KiB Swap:   969960 total,    88160 free,   881800 used.   654624 avail Mem  进程 USER      PR  NI    VIRT    RES    SHR %CPU %MEM     TIME COMMAND                                                             1872 ubuntu    20   0  640144  59872   5056 S  4.0  3.0  12:54.43 Xorg                                                                2057 ubuntu    20   0 3057424 149072  31884 S  3.0  7.4  27:58.69 gnome-shell                                                        89961 ubuntu    20   0  949248  69268  23020 S  2.7  3.5   3:17.13 terminator                                                          2193 ubuntu    20   0  809364   5568   2120 S  0.3  0.3   2:22.89 gsd-color                                                         111256 ubuntu    20   0   51380   4456   3616 R  0.3  0.2   0:00.21 top                                                                    1 root      20   0  160076   4676   2652 S  0.0  0.2   0:20.90 systemd                                                                2 root      20   0       0      0      0 S  0.0  0.0   0:00.02 kthreadd      htop动态显示资源使用情况彩色 3ptree展示进程树可以显示进程的父子关系 4查看给定进程的进程号pidof 进程名 5kill向进程发送信号 格式 kill -信号名号     进程号 能够发送的信号号有可以通过指令 kil -查看 1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP  6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1 11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM 16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP 21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ 26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR 31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN1    36) SIGRTMIN2    37) SIGRTMIN3 38) SIGRTMIN4    39) SIGRTMIN5    40) SIGRTMIN6    41) SIGRTMIN7    42) SIGRTMIN8 43) SIGRTMIN9    44) SIGRTMIN10    45) SIGRTMIN11    46) SIGRTMIN12    47) SIGRTMIN13 48) SIGRTMIN14    49) SIGRTMIN15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12 53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7 58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2 63) SIGRTMAX-1    64) SIGRTMAX     共计62个 前32个属于稳定信号 SIGHUP         当进程所在的终端关闭时该终端会向运行在该终端上的所有进程发送该信号让其结束进程 SIGINT         当终端键入 ctrlc时终端向指定进程发送的就是该信号表示中断进程 SIGOUIT         当终端键入 ctrl \时表示终端要终止进程的结束 SIGILL         当进程自己发生非法操作时内核空间会发送该信号 SIGKILL         杀死进程 SIGUSR1、SIGUSR2         没有特殊的含义留给程序员使用 SIGSEGV         表示指针访问越界时的段错误 SIGPIPE         当操作管道文件时如果管道的读端被关闭写端继续写的话就会出现管道破裂 SIGALRM         当启动一个定时器并且定时器超时时会发送该信号 SIGHCHLD         当一个进程的子进程退出时会向该进程的父进程发送该信号表示让其为子进程收尸 SIGCONT         该信号表示让暂停的进程继续执行 SIGSTOP、SIGSTP         表示让一个进程暂停当用户从键盘上键入 ctrl z时就会发送该信号 1.7、进程的状态 1主要状态有五个创建态、就绪态、运行态、阻塞态、死亡态 2程序中的进程状态显示可以通过man ps查看 主状态                D    不可中断的休眠态 (usually IO)                R    运行态 (on run queue)                S    可中断的休眠态 (waiting for an event to complete)                T    暂停态会给出作业号进行控制                t    程序调试时的暂停态                W    已经弃用                X    死亡态 (should never be seen)                Z    僵尸态 附加态                                                  高优先级的进程 (not nice to other users)                N    低优先级的进程 (nice to other users)                L    锁到内存中的进程 (for real-time and custom IO)                s    会话组组长默认为当前终端                l    包含多线程的进程 (using CLONE_THREAD, like NPTL pthreads do)                    表示是前台运行的进程   二、 多进程编程 2.1fork进程的创建函数 1在进程的创建过程其实就是通过拷贝父进程的lask stucl结构体而来的子进程中保存了大部分的父进程的遗传基因内容一致只需要修改少部分的内容如子进程的进程号子进程的父进程号 2子进程和父进程的资源用户空间是完全独立的创建出子进程后父子进程的资源相互独立互不影响 3进程的创建通过fork函数完成 4当子进程创建后会跟父进程一起执行fork后面的语句 #include sys/types.h        #include unistd.h        pid_t fork(void);     功能拷贝父进程得到子进程     参数无     返回值成功时父进程中返回子进程的pid号子进程中返回0失败返回-1并置位错误                    码 例1   不使用返回值 创建出的子进程跟父进程没有先后执行的顺序遵循时间片轮询机制 例2   使用返回值 #include myhead.h int main(int argc, char const *argv[]) {pid_t pid -1; //定义变量存储 pid 号pid fork(); //获取pidif (pid 0){while (1){printf(父进程\n);sleep(1);}}else if (pid 0){while (1){printf(子进程\n);sleep(1);}}sleep(1);return 0; }2.2 进程号的获取   getpid  getppid #include sys/types.h        #include unistd.h        pid_t getpid(void);        功能获取当前进程的进程号        参数无        返回值当前进程的pid        pid_t getppid(void);        功能获取当前进程的父进程的pid号        参数无        返回值当前进程父进程的pid   2.3进程的退出    exit   _exit #include sys/types.h        #include unistd.h        pid_t getpid(void);        功能获取当前进程的进程号        参数无        返回值当前进程的pid        pid_t getppid(void);        功能获取当前进程的父进程的pid号        参数无        返回值当前进程父进程的pid 2.4 进程资源的回收        wait  waitpid #include sys/types.h        #include sys/wait.h        pid_t wait(int *wstatus);        功能阻塞回收子进程的资源如果没有进程退出那么就阻塞等待        参数子进程退出时的状态一般不接收直接填NULL即可        返回值成功返回回收的子进程的pid失败返回-1并置位错误码                pid_t waitpid(pid_t pid, int *wstatus, int options);        功能既可以阻塞也可以非阻塞形式回收僵尸进程        参数1要回收的进程号                0:表示回收具体的某个进程                0能够回收当前进程所在的进程组中的任意一个子进程                -1回收任意一个子进程                -1: 回收别的进程组进程组id为给定的pid的绝对值中的任意一个子进程         参数2子进程退出时的状态一般不接收直接填NULL即可         参数3表示是否阻塞回收僵尸进程                 0表示阻塞                 WNOHANG表示非阻塞         返回值                 0:如果成功回收了子进程资源那么会返回该子进程的pid                 0:表示以非阻塞的形式回收资源但是没有回收到子进程                 -1:失败返回-1并置位错误码 #includemyhead.hint main(int argc, const char *argv[]) {//定义进程号pid_t pid fork(); //创建一个子进程//判断父子进程if(pid 0){printf(我是父进程pid %d, 当前进程的id为%d,当前进程的父进程的id为%d\n,\pid, getpid(), getppid());}else if(pid 0){printf(我是子进程pid %d,当前进程的pid为%d, 当前进程的父进程pid为%d\n,\pid, getpid(), getppid());sleep(3); //休眠3秒//退出子进程//exit(EXIT_SUCCESS); //exit(0);_exit(EXIT_SUCCESS); //exit(0);}else{perror(fork error);return -1;}//回收子进程资源//wait(NULL);//waitpid(-1, NULL, 0); //阻塞回收sleep(5);waitpid(-1, NULL, WNOHANG); //非阻塞回收printf(回收子进程资源结束\n);while(1);return 0; }作业 #include myhead.h#define N 128 char buf[N] {0};int main(int argc, char const *argv[]) {pid_t pid;int len,size, o_file, n_file;if (argc ! 3){printf(终端输入数不正确\n);return -1;}umask(0000); //置位掩码if ((o_file open(argv[1], O_RDONLY)) -1){perror(open);exit(-1);}n_file open(argv[2], O_RDWR | O_CREAT | O_TRUNC, 0664);if (n_file -1){perror(open);exit(-1);}size lseek(o_file, 0, SEEK_END); //得到源文件大小if (size 0){perror(lseek);exit(-1);}size / 2; //取一半的大小close(o_file);close(n_file);pid fork(); //子程序创建if (pid 0){perror(fork);exit(-1);}else if (0 pid) //子程序执行{o_file open(argv[1], O_RDONLY);if (o_file 0){perror(c open1);exit(-1);}n_file open(argv[2], O_WRONLY);if (n_file 0){perror(c open2);exit(-1);}lseek(o_file, size, SEEK_SET); //光标定位到一半的位置lseek(n_file, size, SEEK_SET);//拷贝后一半while ((len read(o_file, buf, N)) 0){write(n_file, buf, len);}close(o_file);close(n_file);}else //父程序执行{o_file open(argv[1], O_RDONLY);if (o_file 0){perror(f open1);exit(-1);}n_file open(argv[2], O_WRONLY);if (n_file 0){perror(f open2);exit(-1);}//拷贝前一半while (size 0){if (size N){write(n_file, buf, read(o_file, buf, N));size - N;}else{write(n_file, buf, read(o_file, buf, size));break;}}close(o_file);close(n_file);}return 0; }
http://www.dnsts.com.cn/news/180129.html

相关文章:

  • 公司做网站算什么费用网站带支付模板
  • 官方建网站有哪些步骤洛阳网站seo
  • 公司网站地址网站建设推广扬州
  • 网站建设套路重庆建设企业网站
  • 和韩国做贸易的网站森东网站建设
  • 深圳网站优化方案wordpress用户留言插件
  • 怎么样免费做自己的网站网站空间为什么都比数据库大
  • app网站开发工具下载漳州网站建设到博大赞
  • 网站虚拟空间过期一个用vue做的网站
  • 不关站备案wordpress学影视后期大概多少钱
  • 做网站百度百科网站单页面怎么做
  • 珠海网站建设优化网站模版 源码
  • 网站被墙怎么办擦彩网站开发
  • 海南北京网站建设上海松江做网站多少钱
  • 做网站英文怎么写网页设计师的发展路径
  • 大型公司网站制作云县网站建设 云县网
  • 天津自助建站软件百度网站改版工具
  • wordpress影视主题下载失败贺州seo
  • 不用下载就能看的网站的浏览器wordpress 近期文章
  • 高端品牌网站建设公司哪家好在线制作h5网页
  • 给我一个网站贴吧电商网络营销是干什么的
  • 竞价网站做推广方案漳州市建设网站
  • 什么网站都可以进入的浏览器企业信息系统查询系统
  • 中英企业网站模板成全视频在线观看高清版
  • 怎么样检查网站有没有做全站301商标设计网图大全
  • 企业组织网站建设方案大数据网站建设费用
  • html5 网站平台好看云在线网站模板下载 迅雷下载 迅雷下载地址
  • 为什么用html5做网站近期国内新闻
  • 跳转网站怎么做青岛官网seo价格
  • 官方网站是什么公司官网在哪找