学习命令解释器 sh

昨天跟男友一起看了第8章,进程和程序:编写命令解释器sh.

一:

main()

{

  printf("my pid is %d/n",getpid());

  fork();

  fork();

  fork();

  printf("my pid is %d/n",getpid());

}

 

哈哈。。。。

进程中调用fork(),当控制转移到内核中的fork代码后,内核做了以下几件事:

1.分配新的内存块和内核数据结构

2.复制原来的进程到新的进程

3.向运行进程集添加新的进程

4.将控制返回给新的进程

 

fork()后子进程的生命周期开始,往下的动作将和父进程的一样。

 

二:

main()

{

  char *arglist[3];

  arglist[0]="ls";

 arglist[1]="-l";

 arglist[2]=0;

  printf("*** About to exec ls -l/n");

  execvp("ls",arglist);

  printf(" *** ls is done /n");

}

 

exec 系统调用从当前进程中把当前程序的机器指令全部清除,然后在空的进程中载入调用时指定的程序代码,最后运行这个程序。

exec调整进程的内存分配,使之适应新的程序对内存的要求,相同的进程,不同的内容。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值