1
2
Sigkill决不允许任何清理-进程会死掉。对于sigint,这取决于进程是否处理信号。如果是这样,它可能会通过exit(2)退出,这将刷新标准的I/O文件句柄。问题是-管道是连接到标准输出还是通过popen()?如果是,则为未处理的缓冲数据 可以 冲洗;如果没有,则没有缓冲数据,因此冲洗无关紧要。 如果管道中有未读的数据,那么该数据将保留在管道中,以备读者收集——假设有一个读者。
这取决于管道是否通过标准I/O连接。如果没有,则没有挂起的内容。如果是,那么是的,当标准I/O流关闭时,缓冲区中的任何材料都将被刷新。
创建管道的基本系统调用是
如果你使用
对于文件流,如果I/O缓冲区中有数据,则关闭或等效操作将确保刷新未处理的数据并关闭文件描述符。 |
2
1
正常的行为是,当进程终止时,所有文件描述符都将关闭。这意味着管道和其他打开的文件描述符一样,是正常关闭的。 不过,管道有一个有趣的地方:在POSIX中,如果一个进程写入一个已关闭的管道,那么编写器将得到一个信号sigpipe。 编辑: 警告:S SIGX终止和正常终止的区别在于,与任何其他文件写入一样,您可能会丢失已缓冲(通过文件写入)但尚未写入文件描述符的数据。 |
Sandeep · 从根目录开始打印完整的符号链接信息 2 年前 |
jojo · 用正则表达式搜索,但仅用sed替换字符串的一部分 2 年前 |
David Gall · 查找在特定日期从特定计算机登录的所有用户 2 年前 |
JLLMNCHR · 如何在Oracle中将大型表导出/假脱机到文件 6 年前 |