- 浏览: 461088 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (538)
- C/C++ Primer (69)
- Objective-C Primer (102)
- Python Primer (19)
- JavaScript Primer (1)
- Java Primer (37)
- PHP Primer (17)
- 泛 Linux (37)
- Shell Script (21)
- APUE (21)
- UNP__1&2 (19)
- NetWork (7)
- Oracle周边 (38)
- Mysql里边 (6)
- Windows技 (9)
- 简单算法 & 数据结构 (14)
- 设计模式 (6)
- GTK历程 (12)
- 工具使用 (25)
- 杂事 (23)
- 一些概念 (17)
- Web方面 (10)
- myCodeTools (9)
- ^未 竟$ (13)
- 硬件通信 (2)
- Games (1)
最新评论
int main(int argc, char *argv[]) { char say1[] = "hello write\n\0"; char say2[] = "hello printf\n\0"; close(STDOUT_FILENO); write(0, say1, strlen(say1)); printf("%s", say2); return 0; }
int dup2(int oldfd, int newfd); 1)关闭newfd; 2)复制oldfd到newfd,即newfd 指向 oldfd 3)newfd使用原来的描述符。
int main(int argc, char *argv[]) { int fd = open("/home/long/fd/file.txt",O_WRONLY); printf("fd = %d \t OUT = %d\n", fd, STDOUT_FILENO); int stat = dup2(fd, STDOUT_FILENO); char str[128] = {0}; sprintf(str,"dup2 = %d \n",stat); write(2, str, strlen(str)); close(fd); execl("/usr/bin/uptime", "uptime", 0); return 0; }
这里涉及程序的资源表、资源共享
发表评论
-
execl
2010-10-28 11:13 845#include <stdio.h> ... -
Chapter 16__套接字
2010-10-25 11:39 588AF_INET、TCP、UDP、SCTP 报文界限 soc ... -
pthread_mutex_lock Test
2010-10-22 15:43 974#include <stdio.h> #in ... -
Chapter 14__高级IO
2010-10-20 11:45 718struct flock { short ... -
Chapter 15__进程间通信
2010-10-19 15:15 670- - 纯属抄书。。。 IPC(InterProcess ... -
APUE一栏入口
2010-10-14 15:25 756《UNIX环境高级编程》 《Advanced Programm ... -
Chapter 3__文件IO
2010-10-14 14:51 24int fcntl(int filedes, int cm ... -
Chapter 14
2010-10-14 09:01 7111、永远阻塞的调用有哪些? 阻塞,直到函数调用完成为止, ... -
Chapter 5__标准IO库
2010-10-12 11:56 6051)缓冲的本质是减少read和write调用的次数,也就是物 ... -
Chapter 4__文件和目录
2010-10-09 17:34 702一些概念: 主、次设备号 主设备号标识设备驱动程序 次设备号 ... -
Chapter 3__文件IO
2010-10-08 15:47 658无聊,贴些本章的关键字: 一、空洞文件、预读技术(read ... -
Chapter 1__ls DIR And struct dirent
2010-10-08 10:25 58遍历目录 #include "aupe.h& ... -
stdarg.h 可变长参数
2010-09-30 12:13 759http://zh.wikipedia.org/zh-sg/S ... -
Practice Shell解释器
2010-09-29 15:34 951http://linux.chinaunix.net/bbs/ ... -
Chapter 13__守护进程Daemon
2010-09-29 14:43 626为什么守护进程会从进程中成为一类,相对普通进程有什么区别? ... -
Chapter 12__线程控制
2010-09-29 09:53 625★12.2线程限制,sysconf函数,增强可移植性; ★ ... -
Chapter 11__线程
2010-09-28 09:35 681★线程的执行环境 线程ID、栈 一组寄存器值 调度优先级和策 ... -
Chapter 10__信号
2010-09-27 14:06 743SIGHUP解说,有关终端和 ... -
Chapter 9__进程关系
2010-09-27 12:06 753------------------------------ ... -
Chapter 8__进程控制
2010-09-19 13:58 721//一些函数: pid_t getpid(void); ...
相关推荐
`dup`创建了与`fd1`相同的新描述符`fd2`,然后`dup2`将`fd1`的值复制到`fd2`,并关闭`fd1`。因此,后续对`fd2`的写操作将追加到文件末尾,因为两个描述符都指向同一位置。 通过了解和使用`dup`和`dup2`,开发者可以...
dup2(fd1, fd2); // 将fd1复制到fd2,关闭原来的fd2内容 write(fd1, "dup2 example", strlen("dup2 example")); // 写入数据 char buffer[100]; lseek(fd2, 0, SEEK_SET); read(fd2, buffer, sizeof(buffer)...
#### 3.12 dup and dup2 Functions(dup和dup2函数) 这部分讲解了如何使用dup和dup2函数复制文件描述符。 #### 3.13 sync, fsync, and fdatasync Functions(sync、fsync和fdatasync函数) 这里介绍了如何使用这些...
3.12 dup和dup2函数60 3.13 sync、fsync和fdatasync函数61 3.14 fcntl函数62 3.15 ioctl函数66 3.16 /dev/fd 67 3.17 小结68 习题68 第4章文件和目录71 4.1 引言71 4.2 stat、fstat和lstat函数71 目录 ...
例如,`close()` 用于关闭文件并释放资源,`creat()` 用于创建新文件,而 `dup()` 和 `dup2()` 则用于复制文件描述符,`fcntl()` 提供了更为灵活的文件描述符操作能力。掌握这些函数不仅能帮助开发者更好地控制文件...
- **基本语法**: `int close(int fd);` - **描述**: 关闭由`fd`标识的文件描述符。 - **返回值**: 成功返回0,失败返回-1。 - **Read 函数** - **基本语法**: `ssize_t read(int fd, void *buf, size_t count);...
close(fd[0]); close(STD_OUT); dup(fd[1]); close(fd[1]); redirect(order); } else { close(fd[1]); close(STD_IN); dup(fd[0]); close(fd[0]); waitpid(pid, &status, 0); pipel(other); } } ``` ...
- **dup/dup2**:`dup()`函数用于复制一个文件描述符,而`dup2()`则允许用户指定新的文件描述符。 - **dup()**:`int dup(int oldfd);` 复制旧的文件描述符。 - **dup2()**:`int dup2(int oldfd, int newfd);` 将...
3.12 dup和dup2函数60 3.13 sync、fsync和fdatasync函数61 3.14 fcntl函数62 3.15 ioctl函数66 3.16 /dev/fd 67 3.17 小结68 习题68 第4章文件和目录71 4.1 引言71 4.2 stat、fstat和lstat函数71 目录 ...
dup2(fd[0], 0); // 重定向标准输入 execlp("cat", "cat", "-u", "input.txt", NULL); } pid_t pid2 = fork(); // 创建第二个子进程 if (pid2 == 0) { // 子进程2 close(fd[0]); // 关闭读端 dup2(fd[1], 1); /...
dup2(fd[1], STDOUT_FILENO); /* 替换标准输出 */ /* 父进程中也需要做类似的替换 */ ``` **3. popen() 和 pclose()** - **popen()**:创建一个管道并启动一个子进程。 - **pclose()**:关闭管道并等待子进程结束...
本文将详细介绍`close()`、`creat()`、`dup()`、`dup2()`以及`fcntl()`这五个与文件描述符相关的函数,它们是Linux I/O操作的核心组件。 首先,`close()`函数用于关闭一个已经打开的文件。当你完成对文件的操作后,...
if (dup2(fd[1], STDOUT_FILENO) != STDOUT_FILENO) return -1; close(fd[1]); } execl("/bin/sh", "sh", "-c", cmdstring, (char*)0); } return 0; } ``` 这里,`pipe`创建了管道,`fork`创建子进程,`dup...
dup2(fd[1], 1); // 将fd[1](写端)重定向为标准输出 close(fd[0]); // 关闭不需要的读端 ``` **数据传输**: 现在,父子进程可以通过管道进行通信。子进程写入数据,父进程读取数据。例如,子进程可能使用`write...
- `dup()`和`dup2()`函数用于复制文件描述符。 **3.13 sync、fsync和fdatasync函数** - 这些函数用于同步文件系统缓存到磁盘。 **3.14 fcntl函数** - `fcntl()`函数提供了对文件描述符的高级控制。 **3.15 ioctl...