POSIX 系统应用程序接口 errno IEEE dev_t gid_t pid_t uid_t 标准 进程创建fork execl执行 wait 等待进程终止 _exit 终止一个进程

 POSIX:可移植性操作系统接口,是一种关于信息技术的IEEE 标准

               :包括 系统应用程序接口(简称 API),实时扩展[C 语言]

        目的:定义了标准的基于 UNIX 操作系统的系统接口 ,环境来支持源代码级的可移植性

语言规范:

      访问核心服务的编程语言的标准接口

     一个特殊语言服务的标准接口

该标准:

     陈述的范围和一系列标准参考,定义和总概念,各种接口设备,数据交换格式

该标准的目的:

      面向应用

       定义接口,而不是它的具体实现

       涉及资源和可移植性,而非对象

       基于 c 语言

     无超级用户,无系统管理

      最小限度的接口,最小限度的定义

      应用领域广泛

     对以前的实现进行最小限度改变

     对原有程序代码做最小的修改

     实时扩展

概述

   定义范围的关键要素:

        定义足够的一套功能适用于实时应用程序领域的重要部分

       定义足够的实现规范和性能相关的函数,以便允许实时应用程序完成系统的确定性的响应

   一致性:

         系统须支持标准中定义的接口,系统能够提供标准中没有要求到的函数和工具

         所有遵循标准的应用程序都使用基于 c 语言的服务

术语和基本需求

      定义:

        术语:

             一致性文档,被定义的实现,可能性,无用的特性

            通用名词:绝对路径,存取模式,地址空间,适当权限,定时器,异步 I/O 操作,后台进程,后台进程组,块文件,阻塞进程

        基本概念:

              扩展安全控制;文件存取允许;文件级别;文件名可移植性;路径名的决定;

        错误号:

            大部分函数都在外部变量 errno 中提供了错误号

extern int errno;

         简单系统的数据类型:

// /usr/include/x86_64-linux-gnu/sys
#include <sys/types.h>

//设备号
#ifndef __dev_t_defined
    typedef __dev_t dev_t;
    # define __dev_t_defined
#endif

//进程标识符
#ifndef __gid_t_defined
    typedef __gid_t gid_t;
    # define __gid_t_defined
#endif

//文件序列号
#ifndef __ino_t_defined
    # ifndef __USE_FILE_OFFSET64
        typedef __ino_t ino_t;
    # else
        typedef __ino64_t ino_t;
    # endif

    # define __ino_t_defined
#endif

//连接内容
#ifndef __nlink_t_defined
    typedef __nlink_t nlink_t;
    # define __nlink_t_defined
#endif

//文件大小
#ifndef __off_t_defined
    # ifndef __USE_FILE_OFFSET64
        typedef __off_t off_t;
    # else
        typedef __off64_t off_t;
    # endif

    # define __off_t_defined
#endif
#if defined __USE_LARGEFILE64 && !defined __off64_t_defined
    typedef __off64_t off64_t;
    # define __off64_t_defined
#endif

//进程或进程组标志符
#ifndef __pid_t_defined
    typedef __pid_t pid_t;
    # define __pid_t_defined
#endif

//返回字节数和错误标志的函数
#ifndef __ssize_t_defined
    typedef __ssize_t ssize_t;
    # define __ssize_t_defined
#endif

//用户标志符
#ifndef __uid_t_defined
    typedef __uid_t uid_t;
    # define __uid_t_defined
#endif

       环境描述:

          当一个进程开始执行时,将调用一个表示环境的字符串数组

extern char **environ;

进程原语

   进程的创建和执行

         进程创建

#include <sys/types.h>

//创建一个新的进程
pid_t fork(void);

         执行一个文件

/*
 * 用一个新的进程映像替代了当前的进程映像
 * 新进程映像文件: 新的进程映像创建于一个规则的,可执行文件
 * 成功无返回值
 *    因为调用进程映像,被新的进程映像 覆盖
 */
int execl(const char *path, const char *arg, ...);
int execv(const char *path, const *char argv[]);
int execle(const char *path, const char *arg, ...);
int execve(const char *path, const *char argv[], char *const envp[]);
int execlp(const char *file, const char *arg, ...);
int execvp(const char *file, char *const argv[]);

进程的终止

    进程的终止:

          从 main()函数返回时或者执行 exit()或_exit()函数时正常的终止

          被 abort()函数请求或者接受到一些信号时不正常的终止

   等待进程终止:

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

/*
 *调用进程获得它的一个子进程的状态信息
 *Wait: 将挂起调用进程直到获得了它的子进程的状态信息 或直到获得一个终止进程信号
 *pid=- 1 并options = 0,wait 与 waitpid功能相同
 *  否则功能由 pid 和 options 的值而改变
 */
pid_t wait(int *stat_loc);
pid_t waitpid(pid_t pid, int *stat_loc, int options);

     终止一个进程

//终止一个调用进程,不返回
void _exit(int status);
 
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-21 11:33
昨天是学校最后一场招聘会,鼠鼠去参加了,全场只有一个招聘java的岗位,上来先做一份笔试题,做完后他拿张纸对答案,然后开始问简历上的问题,深圳小厂,6-8k(题目如下),后面还有两轮面试。然后我就在招聘现场逛呀逛,看到有公司招聘电商运营,给的比上年的小厂还多,鼠鼠就去了解了下,然后hr跟鼠鼠要了份简历,虽然我的简历上面全是求职Java开发相关的内容,但是hr还是鼓励我说没关系,她帮我把简历给老板看看,下周一会给我通知。招聘会结束后鼠鼠想了一段时间,也和朋友聊了聊,发现我可能是不太适合这个方向,然后就跟爸爸说回家了给我发条微信,我有些话想跟他说说。晚上爸爸到家了,跟我发了条微信,我立马跑出图书馆跟他打起了电话,这个通话长达一个小时,主要是跟爸爸坦白说我不想找这行了,是你的儿子太没用了,想试试其他行业。然后爸爸也跟我说了很多,说他从来没有希望我毕业后就赚大钱的想法,找不到就回家去,回家了再慢慢找,实在找不到就跟他干(帮别人装修房子,个体户),他也知道工作不好找,让我不要那么焦虑,然后就是聊一些家常琐事。对于后面的求职者呢我有点建议想提一下,就是如果招实习的时间或者秋招开始,而你的简历又很差的情况下,不要说等做好项目填充完简历之后再投,那样就太晚了,建议先把熟悉的项目写上简历,然后边投边面边完善,求职是一个人进步的过程,本来就比别人慢,等到一切都准备好后再投岂不是黄花菜都凉了。时间够的话还是建议敲一遍代码,因为那样能让你加深一下对项目的理解,上面那些说法只是针对时间不够的情况。当然,这些建议可能没啥用,因为我只是一个loser,这些全是建立在我理想的情况下,有没有用还需其他人现身说法。上篇帖子没想到学校被人认了出来,为了不丢脸只能匿名处理了。
KPLACE:找研发类或技术类,主要还是要1.多投 2.多做准备,很多方面都要做准备 3.要有心理准备,投累了就休息一两天,再继续,要相信自己能找到
投递58到家等公司7个岗位
点赞 评论 收藏
分享
叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务