- 论坛徽章:
- 0
|
本帖最后由 davidmalone 于 2011-08-19 01:55 编辑
1 fork调用后子进程拥有一个父进程缓冲区的副本,而vfork调用后,父子进程共享I/O缓冲区
这意思是 fork的话,子进程和父进程并不共享I/O缓冲区,子进程拷贝了父进程的副本而已
而vfork调用后,则共享?
2 标准库I/O相对于系统I/O, fgetc比指定I/O长度为1的read效率高是因为fgetc的实现相当于有一个具有最佳I/O长 n 的系统调用read预先读入了n个字节入流的缓冲区,然后再这个流缓冲区里一次读取一个字节,是这样理解吗
3关于session和作业的理解:APUE里说
一个对话期中的几个进程组可被分成一个前台进程组(foreground process group)以及一个或几个后台进程组(background process group)。前台进程组接受终端输入信号。Shell中的作业控制就是对前后台进程组的控制,&或Ctrl+Z的进程组就是后台进程组。
如果一个对话期有一个控制终端,则它有一个前台进程组,其他进程组则为后台进程组。
对于不支持作业控制的Shell,例如bsh,它的命令和它自身的进程处于同一个会话和前台进程组。在后台执行的命令(&)和管道命令的进程依然和Shell是同一个进程组。
感觉这两句话前后矛盾啊
后台执行的命令(&)和管道命令的进程依然和Shell是同一个进程组。这意思是在后台执行的命令也属于前台进行组?
4 用sigprocmask设置 SIGQUIT 阻塞,然后调用sleep()函数
如果在sleep休眠期间产生了退出信号,那么此时信号是未决的,但是不再受阻塞
这句话如何理解,也就是信号阻塞除了用sigemptyset或者sigprocmask解除外,还能因为休眠期间收到信号而解除?
而且信号是pending的不受阻塞的,那么何时被递交给进程呢?
5 APUE里说如果新线程在主线程调用pthread_create返回之前就运行了
这意思是 pthread_create不是原子操作吗? |
|