1. 首页
  2. 考试认证
  3. 其它
  4. 编程规则-hds ams 2500用户手册

编程规则-hds ams 2500用户手册

上传者: 2024-07-22 15:55:21上传 PDF文件 17.98MB 热度 19次

在编写精灵进程程序时,我们需要遵循一些基本规则,以防止产生不希望的交互作用。首先是调用 fork,然后使父进程退出。这样做实现了两点:第一,如果该精灵进程是由一条简单的 shell 命令启动的,那么父进程的终止会让 shell 认为命令已经执行完成;第二,子进程继承了父进程的进程组ID,但具有一个新的进程ID,确保了子进程不是进程组的首进程。这是为了后面调用 setsid 创建新对话期的必要前提条件。

在创建新对话期后,进程将成为新对话期的首进程、新进程组的首进程,并且没有控制终端。有些人建议此时再调用 fork 并使父进程终止,确保精灵进程不是对话期的首进程,从而防止它取得控制终端。为避免取得控制终端,无论何时打开一个中断设备都要指定 O_NOCTTY

将当前工作目录更改为根目录。这是因为如果精灵进程的当前工作目录在一个挂载的文件系统中,该文件系统在系统重新引导前无法被卸载。某些精灵进程可能会将当前工作目录更改到某个指定位置,比如行式打印机假脱机精灵进程通常将其工作目录更改到它们的 spool 目录上。

然后,将文件方式创建屏蔽字设置为0。继承的文件方式创建屏蔽字可能会拒绝设置某些权限,如果精灵进程需要创建一个组可读、写的文件,而继承的屏蔽字屏蔽了这两种权限,则所需的权限无法生效。

关闭不再需要的文件描述符,使精灵进程不再持有从其父进程继承来的文件描述符。具体关闭哪些描述符与精灵进程的实现有关,但可以使用 open_max 函数来决定最高文件描述符值,并关闭直到该值的所有描述符。

关于精灵进程的更多编程规则,可以参考《UNIX环境高级编程13精灵进程》《Linux进程编程》。这些资源详细讲解了创建精灵进程的步骤和注意事项,非常适合深入学习。

为什么不花点时间阅读这些精彩的资源呢?每一步都有详细的讲解和示例代码,帮助你掌握精灵进程编程的精髓!

下载地址
用户评论