当前位置: 首页 > 网络应用技术

UNIX环境编程(C语言)-Multi-Process(1) - 基本知识

时间:2023-03-07 15:50:14 网络应用技术

  C程序始终在主函数中执行。主要的原型是

  其中,ARGC是命令行参数的数量。ARGV是由每个参数组成的指针号码ARGV [0]将是一个空指针

  该过程终止有八种方法。正常终止为:主要返回,呼叫出口,呼叫_exit(_EXIT),最后一个线程返回,最后一个线程呼叫pthread_exit normal终止:呼叫中止,接收信号,最后的crocessResponse,用于取消请求

  以上一些尚未参与其中,稍后让我们谈谈。在它们中,退出功能将清理关闭徽标io库,以获取流量打开的所有数据,而输出缓冲区则全部数据被冲洗(即,写在文件上)

  当在MAIN中调用返回时,返回将调用退出,但是其他功能中的返回将不会调用退出,也就是说,其他功能中的返回不会导致该过程从流程退出中撤回

  如果定义了主要定义,则没有声明返回值int,该过程的过程可能是一个随机值

  当我们致电出口终止流程时,退出将首先调用注册处理过程,最后关闭所有通过FCLOSE的开放流

  我们可以使用函数AtexIT来注册处理功能的终止。最多32个功能原型的过程

  ATEXIT的参数是功能指针。此功能是没有参数的功能退出,无需返回值即可调用这些功能的顺序和注册顺序。

  使用实例

  过程的过程:

  每个程序都将接收一个环境表,就像命令行参数表一样,这也是字符指针数组的字符指针数组到以“ 0”结尾的字符串,最后一个指针值是Null Global Variable Environing包含以下内容指针阵列阵列第一个地址

  每个字符串是名称的形式=值

  让我们编写一个程序,打印命令行参数列表和环境表

  运行结果

  如上所述,我们查看的环境表的形式是名称=值的形式。实际上,我们不必直接访问enveron。您可以通过某些功能获得所需环境变量的值。

  注意:我们只能修改当前过程和子过程的环境,并且不能更改父进程的环境

  putenv:参数str是名称=值形式的状态。此功能将其添加到环境表中。如果名称已经存在

  setEnv:将名称的值设置为值。如果环境中已经命名,则重新设计为0时,未删除原始定义,未设置新值,错误是错误的。

  UNSETENV:删除名称的定义,不存在或报告错误

  流程ID:每个过程都有一个以非负整数表示的过程ID,并且该ID是唯一的,但也可以重复使用

  进程ID 0:

  第0号ID是调度过程,也称为交换过程。它是内核和系统过程的一部分

  进程ID 1:1 ID是Init进程。自我检查完成后,将调用内核。这是具有超级用户权限的用户流程。在系统操作过程中,初始过程将永远不会退出。当其他流程的父程流程死亡时,它将通过初始化过程“采用”。

  查看过程ID

  有效的用户ID和有效的用户组ID:该过程用于确定我们对资源的访问。在正常情况下,有效的用户ID等于实际用户ID,有效的用户组ID等于实际用户组ID。设置设置时-D -D(SUID)位设置,有效的用户ID等于文件所有者的UID,而不是实际的用户ID; ID等于文件所有者的GID,而不是实际的用户组ID。

  实际用户:一开始执行程序的用户,例如使用帐户iCEUP登录到shell,然后执行程序ls,然后实际用户为cuidup。该程序正在运行

  对于SUID和SGID,请单击以查看文章:Linux系统学习---用户管理和权限管理(3)

  每个过程都有一组资源限制。我们可以将getrlimit setrlimit用于查询和修改

  原型

  修改资源限制时,应遵守以下规则

  参数资源是相应的资源,将在下面列出