博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 开发 -- 进程控制
阅读量:2394 次
发布时间:2019-05-10

本文共 1119 字,大约阅读时间需要 3 分钟。

进程标识符

  1. 头文件
    #include 
  2. 进程标识符
     

pid_t getpid(void); /* 返回值:调用进程的进程 ID / pid_t getppid(void); / 返回值:调用进程的父进程 ID / uid_t getuid(void); / 返回值:调用进程的实际用户 ID / uid_t geteuid(void); / 返回值:调用进程的有效用户 ID / gid_t getgid(void); / 返回值:调用进程的实际组 ID / gid_t getegid(void); / 返回值:调用进程的有效组 ID */

## **fork** 函数一个现有进程可以调用 `fork` 函数创建一个新进程。```c#include 
pid_t fork(void);/* 返回值:子进程中返回 0,父进程中返回子进程 ID,出错返回 -1 */

示例代码:

#include 
int main(int argc, char *argv[]){ pid_t pid; if ((pid = fork()) < 0) { err_sys("fork error"); } else if (pid == 0) { /* child */ child(); } else { /* parent */ parent(); } return 0;}

使 fork 失败的两个主要原因是:系统中已经有太多的进程(通常意味着某个方面出了问题),或者该实际用户 ID 的进程总数超过了系统限制。其中 CHILD_MAX 规定了每个实际用户 ID 在任一时刻可具有最大的进程数。

获取 CHILD_MAX

  1. 头文件

    #include 
  2. 运行时限制可以通过调用下面三个函数中的一个而取得。

    long sysconf(int name);	long pathconf(const char *path, int name);	long fpathconf(int fd, int name);
  3. 具体的 name 参数根据系统不同而不同,在 ubuntu 14.04 里面的 <bits/confname.h> 记录这三个函数所用到的参数名。其中 pathconffpathconf_PC_* 开头,sysconf_SC_* 开头。

    long child_max = sysconf(_SC_CHILD_MAX);

转载于:https://my.oschina.net/iblackangel/blog/889182

你可能感兴趣的文章
所有从非官方网站下载的putty和WinSCP都有后门(附清理方式)
查看>>
[WAF]apache和modsecurity的安装
查看>>
写给换工作和找工作的同学
查看>>
Island Hopping the SpiderLabs Way
查看>>
Top Ten Web Protection Techniques of 2011
查看>>
宁皓网bootstrap
查看>>
Hive作业优化总结(来自一号店)
查看>>
http get post head
查看>>
关于C语言中函数调用和参数传递机制的探讨
查看>>
堆栈溢出从入门到提高
查看>>
Linux环境进程间通信 共享内存(下)
查看>>
Linux环境进程间通信 共享内存(上)
查看>>
Linux select函数(二)
查看>>
Yacc使用
查看>>
C语言里面的嵌套声明的读法
查看>>
linux下gdb单步调试(中)
查看>>
写一个块设备驱动-第9章
查看>>
从头做leetcode之leetcode 5 最长回文子串
查看>>
设计模式、框架和架构的联系
查看>>
安装VMware虚拟机
查看>>