一、进程与信号之进程的创建

进程创建

#include <sys/types.h>
#include <unistd.h>

pid_t fork(void);

fork 调用2次,所以又2次返回值,父进程中返回子进程id》0 ,子进程中返回0,出错返回-1

进程实例

#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    printf("now pid: %d\n",getpid());
    pid_t pid;
    pid=fork();
    int i;
    
    if(pid<0)
    {
        printf("create progress error\n");
        return 1;
    }
    else if(pid ==0)
    {
        for(i=0;i<10;i++)
        {
            printf("I am son progress,pid: %d ppid: %d\n",getpid(),getppid());
            i++;
            sleep(1);
        }        
    }
    else
    {
        for(i=0;i<10;i++)
        {
            printf("I am father progress,pid: %d ppid: %d\n",getpid(),getppid());
            i++;
            sleep(1);
        }        
    }
    printf("pid: %d\n",getpid());
    sleep(1);
    return 0;
}

运行结果

now pid: 3324
I am father progress,pid: 3324 ppid: 3166
I am son progress,pid: 3325 ppid: 3324
I am father progress,pid: 3324 ppid: 3166
I am son progress,pid: 3325 ppid: 3324
I am father progress,pid: 3324 ppid: 3166
I am son progress,pid: 3325 ppid: 3324
I am father progress,pid: 3324 ppid: 3166
I am son progress,pid: 3325 ppid: 3324
I am father progress,pid: 3324 ppid: 3166
I am son progress,pid: 3325 ppid: 3324
pid: 3324
pid: 3325
可以看出父子进程是交替运行的
父子进程哪个先运行根据系统调度

子进程继承

子进程继承属性
    用户信息权限,目录信息,信号信息,环境,共享存储段,资源限制,堆,栈和数据段,共享代码段
子进程特有属性
    进程id,锁信息,运行时间,未决信号
操作文件的内核结构变化
    子进程只继承父进程的文件描述符表,不继承单共享文件表项和i-node
    父进程创建一个子进程后,文件表项的引用计数器加1变2,当父进程close操作后,计数器减1,子进程还是可以使用文件表项,只有计数器为0时才释放文件表项

只有正文段共享物理内存

静态变量,全局变量存储于正文段,局部变量存储于栈中

原生文件IO统函数与C库文件IO函数区别

#include <stdlib.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
File *fp=fopen("a.txt","w") //系统原生IO函数 --- 带缓存
fprintff(fd,'aaa');

fd=open("a.txt","w") //C库函数 ----不带缓存
     write(fd,'aaa');


 

转载于:https://www.cnblogs.com/peixiguang/p/5816312.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值