dup2-close-fd


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;
}


[size=large]
这里涉及程序的资源表、资源共享
[/size]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值