做网站流量优化都是什么,网站后期维护需要注意什么,wordpress lovephoto,网站后台作用重定向 重定向是什么#xff1f;dupdup2 重定向是什么#xff1f;
进程在最开始运行的时候#xff0c;首先打开了三个文件#xff0c;分别是标准输入流、标准输出流、标准错误输出流。证明的时候我是把标准输出留给关闭了#xff0c;然后紧接着创建的文件就会占用已关闭的… 重定向 重定向是什么dupdup2 重定向是什么
进程在最开始运行的时候首先打开了三个文件分别是标准输入流、标准输出流、标准错误输出流。证明的时候我是把标准输出留给关闭了然后紧接着创建的文件就会占用已关闭的标准输出流使得本该流向显示器的数据流向了新创建的文件。先不谈底层的原理就只看表象就像是使数据流的方向从一个方向指向了另一个方向完成了数据流的方向重定向。现在再次理解重定向就好理解得多了重新锚定方向 ———————————————— 版权声明本文为博主原创文章遵循 CC 4.0 BY-SA 版权协议转载请附上原文出处链接和本声明。原文链接https://blog.csdn.net/qq_63412763/article/details/127732577
dup
#include unistd.hint dup(int fd);
int dup2(int fd1int fd2);
两个均为复制一个现存的文件的描述。
两个函数的返回若成功为新的文件描述若出错为-1
由dup返回的新文件描述符一定是当前可用文件描述中的最小数值。用dup2则可以用fd2参数指定新的描述符数值。如果fd2已经打开则先关闭。若fd1fd2则dup2返回fd2而不关闭它。通常使用这两个系统调用来重定向一个打开的文件描述符。
#include sys/types.h
#include sys/stat.h
#include fcntl.h
#include stdio.h
#include errno.h
#include string.h
#include unistd.h/** ./dup 1.txt* argc 2* argv[0] ./dup* argv[1] file* ...*/int main(int argc, char **argv)
{char buf[10];char buf2[10];if (argc ! 2){printf(Usage: %s file\n, argv[0]);return -1;}int fd open(argv[1], O_RDONLY);int fd2 open(argv[1], O_RDONLY);int fd3 dup(fd);printf(fd %d\n, fd);printf(fd2 %d\n, fd2);printf(fd3 %d\n, fd3);if (fd 0 || fd2 0 || fd3 0){printf(can not open %s\n, argv[1]);return -1;}read(fd, buf, 1);read(fd2, buf2, 1);printf(data get from fd : %c\n, buf[0]);printf(data get from fd2: %c\n, buf2[0]);read(fd3, buf, 1);printf(data get from fd3: %c\n, buf[0]);return 0;
} dup2
#include stdio.h
#include sys/types.h
#include sys/stat.h
#include fcntl.h
#include unistd.h
#include errno.h
#include string.h/** ./dup2 1.txt* argc 2* argv[0] ./dup2* argv[1] file* ...
*/int main(int argc,char **argv)
{int fd 0;if(argc 2){printf(Usage:%s file\n,argv[0]);return -1;}fd open(argv[1],O_RDWR | O_CREAT | O_TRUNC,0666);if(fd 0){printf(Can not open %s!\n,argv[1]);printf(errno %d\n,errno);printf(%s\n,strerror(errno));return -1;}else{printf(fd %d\n,fd);}dup2(fd,1);printf(hello,world\n);return 0;
}