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

做电视网站需要多大的服务器百度快速收录提交工具

做电视网站需要多大的服务器,百度快速收录提交工具,找专业公司做网站,wap网站搭建目录 api 创建新进程 注意 运行某文件 例子 注意 例子,等待进程 进程是由进程控制块、程序段、数据段三部分组成 进程有都有一个父进程,除了init,父进程可以创建子进程 每个进程都有一个PID,可以用ps来查看,等…

目录

api

创建新进程

注意

 运行某文件

例子

注意

例子,等待进程


进程是由进程控制块、程序段、数据段三部分组成

进程有都有一个父进程,除了init,父进程可以创建子进程

每个进程都有一个PID,可以用ps来查看,等于进程的身份证

pid是本身进程的pid,ppid是父进程的pid

api

创建新进程

当一个进程调用 fork( )成功后,fork( )将分别返回到两个进程之中,换句话说,fork( ) 在父子两个进程中都会返回,而他们所得到的返回值也不一样

注意

  • fork( )会使得进程本身被复制(想想细胞分裂),因此被创建出来的子进程和父进程几乎是一模一样的,说“几乎”意味着子进程并不是 100%为一份父进程的复印件,他们的具体关系如下,父子进程的以下属性在创建之初完全一样,子进程相当于搞了一份复制品
    • 实际 UID 和 GID,以及有效 UID 和 GID。
    • 所有环境变量。
    • 进程组 ID 和会话 ID。
    • 当前工作路径。除非用 chdir()加以修改
    • 打开的文件。
    • 信号响应函数。
    • 整个内存空间,包括栈、堆、数据段、代码段、标准 IO 的缓冲区等等
  • 父子进程是相互独立的:由于子进程完整地复制了父进程的内存空间,因此从内存 空间的角度看他们是相互独立、互不影响的
  • 父子进程是相互平等的:他们的执行次序是随机的

 运行某文件

  • 被加载的文件的参数列表必须以自身名字为开始,以 NULL 为结尾。比如要加载执 行当前目录下的一个叫做 a.out 的文件,需要一个参数”abcd”,那么正确的调用应该是: execl(“./a.out”, “a.out”, “abcd”, NULL); 或者:const char *argv[3] = {“a.out”, “abcd”, NULL};execv(“./a.out”, argv);
  • exec 函数簇成功执行后,原有的程序代码都将被指定的文件或脚本覆盖,因此这些函数一旦成功后面的代码是无法执行的,他们也是无法返回的

例子

1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4
5 int main(int argc, char **argv)
6 {
7     pid_t x;
8     x = fork();
9
10     if(x > 0) // 父进程
11     {
12         printf("[%d]: I am the parent\n", (int)getpid());
13         exit(0);
14     }
15
16     if(x == 0) // 子进程
17     {
18         printf("[%d]: I am the child\n", (int)getpid());
19         execl("./child_elf", "child_elf", NULL); // 执行 child_elf 程序
20
21         printf("NEVER be printed\n"); // 这是一条将被覆盖的代码
22     }
23
24     return 0;
25 }

运行结果是

[24585]: I am the parent
vincent@ubuntu:~/ch05/5.2$ [24586]: I am the child
[24586]: yep, I am the child

简单来说exit会执行退出程序之前运行退出处理函数,可以用atexit来注册退出处理函数,例如

void routine1(void) // 退出处理函数
{printf("routine1 is called.\n");
}
atexit(routine1);

注意

所谓的退出状态不是退出值,退出状态包括了退出值。如果使用以上两个函数成 功获取了子进程的退出状态,则可以使用以下宏来进一步解析

例子,等待进程

1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <stdbool.h>
4 #include <unistd.h>
5 #include <string.h>
6 #include <strings.h>
7 #include <errno.h>
8
9 #include <sys/stat.h>
10 #include <sys/types.h>
11 #include <fcntl.h>
12
13 int main(int argc, char **argv)
14 {
15     pid_t x = fork();
16
17     if(x == 0) // 子进程,执行指定程序 child_elf
18     {
19         execl("./child_elf", "child_elf", NULL);
20     }
21
22     if(x > 0) // 父进程,使用 wait( )阻塞等待子进程的退出
23     {
24         int status;
25         wait(&status);
26
27         if(WIFEXITED(status)) // 判断子进程是否正常退出
28         {
29             printf("child exit normally, " 
30                 "exit value: %hhu\n", WEXITSTATUS(status));
31         }
32
33         if(WIFSIGNALED(status)) // 判断子进程是否被信号杀死
34         {
35             printf("child killed by signal: %u\n", 
36                 WTERMSIG(status));
37         }
38     }
39
40     return 0;
41 }

http://www.tj-hxxt.cn/news/3686.html

相关文章:

  • 推广网站刷排名网络营销方法有哪些举例
  • ASP.NET与网站开发实践教程徐州seo排名收费
  • 做网站赔钱了建立一个企业网站需要多少钱
  • 网站怎么做一级域名跳转关键词优化排名网站
  • 有网站怎么做淘宝客百度seo策略
  • 网站建设简单合同模板下载百度搜索引擎排行榜
  • 屏蔽网页 的网站备案2024年2月新冠疫情又开始了吗
  • 网站常州建设农产品网络营销
  • 广东网站建设公司报价培训平台
  • 中国怎么进fiverr网站做任务广告公司名字
  • 镇海做网站西安网络推广公司大全
  • 邯郸哪里可以做网站厦门seo网络推广
  • 北京的广告公司网站建设seo搜索引擎优化入门
  • 如何利用开源代码做网站怎样建立网站平台
  • 微信网站开发费用优秀的网页设计网站
  • dedecms网站关键字在哪个表旺道seo
  • wordpress如何发布文件夹seo查询网站
  • 泰州网站制作公司百度一下首页下载安装桌面
  • 连接器零售在什么网站做网络推广平台有哪些公司
  • 有什么设计logo网站网络推广技巧
  • 成都网站优化最低价安卓内核级优化神器
  • 做网站需要注册哪类商标杭州seo网络公司
  • 建设网站的 成本关键词排名零芯互联排名
  • 文本网站开发英文文献免费数据统计网站
  • 加工平台有哪些设备班级优化大师app下载
  • 网站自适应 如何做长尾关键词排名推广
  • 成都广告公司网站建设开发外包网站
  • 学网站开发有前途吗一个完整的产品运营方案
  • 做私服发布网站犯法吗效果最好的推广软件
  • 医美三方网站怎么做上海seo公司