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系统中进程间通信(Inter-Process Communication, IPC)的经典著作。该书详细阐述了如何在多进程环境中实现有效的数据交换,这对于理解操作系统原理、开发高效...
《UNIX环境高级编程》第9章主要讨论的是进程间的关系,包括进程的父子关系、进程组、对话期的概念,以及登录shell和相关进程之间的交互。这一章的内容是建立在前一章关于进程控制的基础之上的,进一步深入探讨了进程...
本实验源码着重展示了无名管道(unnamed pipe)和IPC通信的C语言实现,这对于理解Unix系统编程和多进程协作至关重要。 无名管道是一种半双工的通信方式,数据只能单向流动,且只存在于内存中,不持久化存储。其工作...
### Unix多进程编程知识点 #### 1. Unix进程概述 Unix系统是一种多用户、多任务的操作系统,支持多个进程同时运行。进程是程序在计算机上的一次执行过程,每个进程都拥有自己的地址空间、数据栈以及其他运行时资源...
根据提供的信息,我们可以了解到这是一本关于《UNIX编程艺术》的经典书籍,该书提供了高清扫描版本,并且包含完整的书签,方便读者进行阅读与查阅。接下来,我们将从这本书的主题出发,探讨几个重要的UNIX编程概念与...
UNIX网络编程----进程间通信----卷2【第二版】源码
《Unix编程艺术》是一本深度探讨Unix操作系统编程的权威之作,由著名的计算机科学家Eric S. Raymond撰写。这本书全面覆盖了Unix编程的各种技术和实践,旨在帮助读者理解和掌握Unix系统的精髓,从而提升软件开发的...
本书全面深入地讲述了各种进程间通信(IPC)形式,它们是几乎所有复杂精致的UNIX程序的性能之关键。从网络编程角度看,理解IPC也是理解如何开发不同主机间网络应用程序的必要条件。本书从对Posix IPC和System V IPC...
在Linux环境中进行高级编程,了解进程环境、进程控制和进程关系是至关重要的。这些概念构成了操作系统的核心部分,允许程序在多任务系统中并发执行。以下是对这些主题的详细阐述: **进程状态转换图** 进程的状态...
通过学习《UNIX高级编程》,程序员不仅可以掌握UNIX编程的核心技术,还能培养出系统级别的思维,从而能够设计和编写更高效、更稳定、更健壮的软件系统。无论是对初学者还是经验丰富的开发者,这都是一本极具价值的...
- **POSIX标准**:提供了跨平台的UNIX编程接口,如pthread库用于线程编程。 通过深入学习和实践以上知识点,你将能够熟练地进行UNIX系统编程,开发出高效、稳定的应用程序。记得结合《UNIX系统编程》这样的参考...
《UNIX环境高级编程》是一本深受程序员和系统管理员喜爱的经典之作,主要针对那些希望深入理解UNIX操作系统,并能熟练进行...无论是自学还是作为参考手册,这本书及其相关资料都能为你的UNIX编程之路提供强大的支持。
《UNIX网络编程——第一卷——套接口API》是网络编程领域的经典之作,尤其在UNIX操作系统环境下,这本书被视为不可或缺的学习资源。作者深入浅出地讲解了网络通信的基础理论和实际操作,帮助开发者理解如何利用套...
FIFO则在此基础上进行了扩展,允许在无亲缘关系的进程间进行数据交换。消息队列则是一个更为复杂的通信机制,它允许在不同进程间存储和传递消息。 2. 同步机制,包括互斥锁、条件变量、读写锁、文件与记录锁以及...
总结来说,Java网络编程虽然主要关注基于TCP和UDP的网络通信,但理解Unix域协议的实现有助于在特定场景下实现更高效、低延迟的进程间通信。通过JNI,开发者可以利用C/C++实现的Unix域协议功能,提升Java应用的性能。...
笔记_UNIX环境网络编程卷二进程间通信_中文第二版
《Unix编程艺术》、《Unix环境高级编程(第二版)》和《Unix网络编程(第二版)》是三本在IT领域中具有深远影响力的经典著作,涵盖了Unix操作系统的核心概念、系统调用、进程管理、文件操作、网络通信等多个重要主题...
9. **标准库与C语言接口**:Unix标准库如`stdio.h`, `stdlib.h`, `string.h`, `unistd.h`等提供了大量的函数,是C语言编程的基础。 10. **Shell脚本编程**:Unix shell不仅是一个命令解释器,还是编写自动化任务的...