fork
创建一个新进程。fork
在子进程中返回0,在父进程中返回子进程pid。
fork后的子进程拥有父进程fd表的拷贝,但是他们共享offset。
exit
结束当前进程,无返回值。status
的值可在wait
中接收。按惯例,0表示成功,1表示错误。
wait
等待一个子进程结束。返回值为子进程pid,status
接收子进程状态。如果当前进程没有子进程,wait
立即返回-1。如果不关心返回状态,可传0作为参数。
exec
将当前进程的内存替换为指定文件的布局。无返回。
将fork和exec拆分为两个系统调用有什么好处?
fork后的子进程拥有父进程fd表的拷贝,exec将保留这些打开的文件。这使得我们可以在两个系统调用之间打开和关闭文件,以进行重定向。
read
从fd中读取最多n字节到buf中,返回读取的字节数。
write
向fd中写入buf中的n字节。返回写入的字节数。如果返回值不等于n,意味着写入出错。
dup
复制一个fd,返回新的fd,两个fd共享offset。
dup允许shell实现以下命令:
pipe
创建一个管道,fds[0]
和fds[1]
分别用于读和写。