码迷,mamicode.com
首页 > 系统相关 > 详细

Linux下系统调用与库函数

时间:2016-04-08 16:48:52      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:系统调用

库函数基于系统调用之上,eg:printf(库函数)和write(系统调用)。经过重定向后,fwrite的内容在文件打印了两次,因为:1.缓冲区方式发生变更(由行缓冲变为全缓冲)2.库函数自带缓冲区,系统调用无缓冲区。

write原型:ssize_t write(int fd, const void *buf, size_t count);

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
        pid_t id;
        printf("hello world");
        const char* msg="I love you";
        write(1,msg,strlen(msg));
        id=fork();
        if(id<0)
        {
                perror("fork");
                exit(1);
        }
        else if(id==0)
        {
                printf("pid: %d,ppid: %d",getpid(),getppid());
        }
        else
        { 
                printf("pid: %d,ppid: %d",getpid(),getppid());
         }
         return 0;
}

技术分享

将输出结果重定向到file文件

技术分享

//修改上述代码为:
int main()
{
       pid_t id;
       printf("hello world");
       const char* msg="I love you";
       close(1);
       FILE* fp=fopen("file","w+");
       write(1,msg,strlen(msg));
       id=fork();
       ...
}

技术分享

关闭文件描述符:标准输出,下一个文件描述符会从前面空的小整数下标开始往后,此时file占据文件描述符1.

本文出自 “小止” 博客,请务必保留此出处http://10541556.blog.51cto.com/10531556/1761786

Linux下系统调用与库函数

标签:系统调用

原文地址:http://10541556.blog.51cto.com/10531556/1761786

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!