`
brxonline
  • 浏览: 64270 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

UNIX编程(9)-进程关系

    博客分类:
  • C
 
阅读更多

1.终端登录

2.网络登录

3.进程组

 

#include <unistd.h>

pid_t getpgrp(void);

 

Returns: process group ID of calling process


 

#include <unistd.h>

pid_t getpgid(pid_t pid);

 

Returns: process group ID if OK, 1 on error


 

#include <unistd.h>

int setpgid(pid_t pid, pid_t pgid);

 

Returns: 0 if OK, 1 on error


4.会话

建立会话

 

#include <unistd.h>

pid_t setsid(void);

 

Returns: process group ID if OK, 1 on error

返回会话的首进程的进程组ID

 

 

#include <unistd.h>

pid_t getsid(pid_t pid);

 

Returns: session leader's process group ID if OK, 1 on error

5.控制终端

6.tcgetpgrp,tcsetpgrp 和tcgetsid函数

 

 

 

#include <unistd.h>

pid_t tcgetpgrp(int filedes);

 

Returns: process group ID of foreground process group if OK, 1 on error

 

int tcsetpgrp(int filedes, pid_t pgrpid);

 

Returns: 0 if OK, 1 on error



 

#include <termios.h>

pid_t tcgetsid(int filedes);

 

Returns: session leader's process group ID if OK, 1 on error


7.作业控制

8.shell执行程序

9.孤儿进程组

例:

创建一个孤儿进程组

#include "apue.h"
#include <errno.h>

static void
sig_hup(int signo)
{
    printf("SIGHUP received, pid = %d\n", getpid());
}

static void
pr_ids(char *name)
{
    printf("%s: pid = %d, ppid = %d, pgrp = %d, tpgrp = %d\n",
        name, getpid(), getppid(), getpgrp(), tcgetpgrp(STDIN_FILENO));
    fflush(stdout);
}

int
main(void)
{
     char     c;
     pid_t    pid;

     pr_ids("parent");
     if ((pid = fork()) < 0) {
         err_sys("fork error");
     } else if (pid > 0) {   /* parent */
         sleep(5);       /*sleep to let child stop itself */
         exit(0);        /* then parent exits */
     } else {            /* child */
         pr_ids("child");
         signal(SIGHUP, sig_hup);    /* establish signal handler */
         kill(getpid(), SIGTSTP);    /* stop ourself */
         pr_ids("child");    /* prints only if we're continued */
         if (read(STDIN_FILENO, &c, 1) != 1)
             printf("read error from controlling TTY, errno = %d\n",
                 errno);
         exit(0);
     }
}

 

分享到:
评论

相关推荐

    UNIX网络编程-第2卷-进程间通讯

    《UNIX网络编程-第2卷-进程间通讯》是一本深入探讨UNIX系统中进程间通信(Inter-Process Communication, IPC)的经典著作。该书详细阐述了如何在多进程环境中实现有效的数据交换,这对于理解操作系统原理、开发高效...

    UNIX环境高级编程-009_进程关系

    《UNIX环境高级编程》第9章主要讨论的是进程间的关系,包括进程的父子关系、进程组、对话期的概念,以及登录shell和相关进程之间的交互。这一章的内容是建立在前一章关于进程控制的基础之上的,进一步深入探讨了进程...

    unix实验---进程间通信实验源码

    本实验源码着重展示了无名管道(unnamed pipe)和IPC通信的C语言实现,这对于理解Unix系统编程和多进程协作至关重要。 无名管道是一种半双工的通信方式,数据只能单向流动,且只存在于内存中,不持久化存储。其工作...

    unix多进程-多进程编程

    ### Unix多进程编程知识点 #### 1. Unix进程概述 Unix系统是一种多用户、多任务的操作系统,支持多个进程同时运行。进程是程序在计算机上的一次执行过程,每个进程都拥有自己的地址空间、数据栈以及其他运行时资源...

    UNIX编程艺术 - 扫描版 - 书签

    根据提供的信息,我们可以了解到这是一本关于《UNIX编程艺术》的经典书籍,该书提供了高清扫描版本,并且包含完整的书签,方便读者进行阅读与查阅。接下来,我们将从这本书的主题出发,探讨几个重要的UNIX编程概念与...

    UNIX网络编程_卷2_进程间通信【第二版】源码

    UNIX网络编程----进程间通信----卷2【第二版】源码

    Unix编程艺术--完整书签版

    《Unix编程艺术》是一本深度探讨Unix操作系统编程的权威之作,由著名的计算机科学家Eric S. Raymond撰写。这本书全面覆盖了Unix编程的各种技术和实践,旨在帮助读者理解和掌握Unix系统的精髓,从而提升软件开发的...

    UNIX网络编程-第2卷-进程间通信

    本书全面深入地讲述了各种进程间通信(IPC)形式,它们是几乎所有复杂精致的UNIX程序的性能之关键。从网络编程角度看,理解IPC也是理解如何开发不同主机间网络应用程序的必要条件。本书从对Posix IPC和System V IPC...

    linux环境高级编程3-unix进程环境、进程控制和进程关系.ppt

    在Linux环境中进行高级编程,了解进程环境、进程控制和进程关系是至关重要的。这些概念构成了操作系统的核心部分,允许程序在多任务系统中并发执行。以下是对这些主题的详细阐述: **进程状态转换图** 进程的状态...

    UNIX高级编程5-6(大师著作)

    通过学习《UNIX高级编程》,程序员不仅可以掌握UNIX编程的核心技术,还能培养出系统级别的思维,从而能够设计和编写更高效、更稳定、更健壮的软件系统。无论是对初学者还是经验丰富的开发者,这都是一本极具价值的...

    UNIX----系统编程

    - **POSIX标准**:提供了跨平台的UNIX编程接口,如pthread库用于线程编程。 通过深入学习和实践以上知识点,你将能够熟练地进行UNIX系统编程,开发出高效、稳定的应用程序。记得结合《UNIX系统编程》这样的参考...

    UNIX环境高级编程-pdf

    《UNIX环境高级编程》是一本深受程序员和系统管理员喜爱的经典之作,主要针对那些希望深入理解UNIX操作系统,并能熟练进行...无论是自学还是作为参考手册,这本书及其相关资料都能为你的UNIX编程之路提供强大的支持。

    unix网络编程--第一卷----套接口API

    《UNIX网络编程——第一卷——套接口API》是网络编程领域的经典之作,尤其在UNIX操作系统环境下,这本书被视为不可或缺的学习资源。作者深入浅出地讲解了网络通信的基础理论和实际操作,帮助开发者理解如何利用套...

    UNIX网络编程_卷2_进程间通信

    FIFO则在此基础上进行了扩展,允许在无亲缘关系的进程间进行数据交换。消息队列则是一个更为复杂的通信机制,它允许在不同进程间存储和传递消息。 2. 同步机制,包括互斥锁、条件变量、读写锁、文件与记录锁以及...

    Java网络编程--Unix域协议:实现

    总结来说,Java网络编程虽然主要关注基于TCP和UDP的网络通信,但理解Unix域协议的实现有助于在特定场景下实现更高效、低延迟的进程间通信。通过JNI,开发者可以利用C/C++实现的Unix域协议功能,提升Java应用的性能。...

    笔记_UNIX环境网络编程卷二进程间通信_中文第二版.pdf

    笔记_UNIX环境网络编程卷二进程间通信_中文第二版

    Unix编程艺术/Unix环境高级编程(第二版)/Unix网络编程(第二版)

    《Unix编程艺术》、《Unix环境高级编程(第二版)》和《Unix网络编程(第二版)》是三本在IT领域中具有深远影响力的经典著作,涵盖了Unix操作系统的核心概念、系统调用、进程管理、文件操作、网络通信等多个重要主题...

    unix环境高级编程----------------------------------

    9. **标准库与C语言接口**:Unix标准库如`stdio.h`, `stdlib.h`, `string.h`, `unistd.h`等提供了大量的函数,是C语言编程的基础。 10. **Shell脚本编程**:Unix shell不仅是一个命令解释器,还是编写自动化任务的...

Global site tag (gtag.js) - Google Analytics