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



这里涉及程序的资源表、资源共享

你可能感兴趣的:(java)