linux 进程创建 c语言,[Linux]C语言Linux系统编程创建进程

[Linux]C语言Linux系统编程创建进程

2019-01-23

编程之家收集整理的这篇文章主要介绍了[Linux]C语言Linux系统编程创建进程,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

搜索热词

@H_3010@1.进程ID

@H3010@每一个进程都由一个唯一的标识符表示,即进程ID,简称pid.系统保证在某时刻每个pid都是唯一的。

@H3010@1.1分配进程ID

@H301_0@缺省情况下,内核将进程ID的最大值限制为32768,可以在此处设置/proc/sys/kernel/pidmax,在短时间内,内核不会重用已经分配的ID.

@H301_0@2.获得进程id和父进程id

#include pid=ppid=

@H_3010@3.运行新进程

@H3010@首先创建新的进程fork()

@H301_0@在新的进程中执行程序exec系列的系统调用

@H_301_0@4.exec系列的系统调用

@H_301_0@execl()函数的原型为 int execl(const char path,const chararg,...)

@H_3010@path是程序路径,arg是传递给指定程序的可变长度参数列表,最后必须是null结尾

@H3010@const 也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据。

@H301_0@通常情况下execl()不会返回结果,成功的调用会以跳到新的程序的入口点作为结束,错误的时候会返回-1

=execl(,,(ret==

@H_301_0@5.fork()系统调用

@H_301_0@创建一个和当前进程映像一样的进程可以通过fork()系统调用,调用者从fork()返回后,仍然继续运行。

@H_3010@当前进程就是父进程,创建成功的进程是子进程。

@H301_0@在父进程成功的fork()调用,会返回子进程的pid

@H_301_0@在子进程fork()调用会返回0

#include ret=(ret>

pid

=

ppid

=

printf(

d,ppid,ret);

sleep(3);//父进程不能太快终止,否则看不出子进程ppid的效果

}else if(ret==0){

pid=getpid();

ppid=getppid();

printf("我是子进程,pid=%d,ppid=%d \n",ppid);

}else if(ret==-1){

perror("fork");

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值