fork() 新建子进程,返回两个值 子进程返回0,父进程返回子进程pid
execlp("bin/ls","ls",arg[0],arg[1],...(char *)0) 如果调用成功,进程自己的执行代码就会变成加载程序的代码,execlp()后边的代码也就不会执行了
kill(pid,SIGXXX) SIGTERM暂时不回收进程内存,立刻回收SIGKILL.
wait(&status) 等待子进程结束
1,WIFEXITED(status) 这个宏用来指出子进程是否为正常退出的,如果是,它会返回一个非零值。
(请注意,虽然名字一样,这里的参数status并不同于wait唯一的参数--指向整数的指针status,而是那个指针所指向的整数,切记不要搞混了。)
2,WEXITSTATUS(status) 当WIFEXITED返回非零值时,我们可以用这个宏来提取子进程的返回值,如果子进程调用exit(5)退出,WEXITSTATUS(status)就会返回5;如果子进程调用exit(7),WEXITSTATUS(status)就会返回7。请注意,如果进程不是正常退出的,也就是说,WIFEXITED返回0,这个值就毫无意义。
open close read write lseek open函数返回文件标示符。直接都硬盘
fopen fclose fgetc fputc fread fwrite fseek fopen返回文件指针,有缓冲区。
int _fileno( FILE *stream ); 实现FILE*与标示符之间转换
int fseek(FILE *stream, long offset, int fromwhere);
off_t lseek(int handle, off_t offset, int fromwhere);
复制文件句柄:
int dup(int handle_f);
int dup2(int oldhandle,int newhandle);
dip2方法如下:
int dup(int filedes);<=>fcnt1(filedes, F_DUPFD, 0);
int dup2(int filedes, int filedes2);<=>close(filedes2);+fcnt1(filedes, F_DUPFD, filedes2);