Linux-C标准输入输出

STDIO

  #include 
  #include 
 
  int main(){
          int     n;
          char    buf[1024];
 
          n = read(STDIN_FILENO, buf, 1024);
          //printf("%d %s\n", n, buf);
          write(STDOUT_FILENO, buf, n);
 
          return 0;
  }


STDIN_FILENO 和 stdio 区别

文件描述符(fd)和 文件指针(FILE *)区别

标准输出连接到终端设备(交互方式)是行缓冲,否则是全缓冲。

文件读写标志

Linux-C标准输入输出_第1张图片Linux-C标准输入输出_第2张图片Linux-C标准输入输出_第3张图片

文件属性 Struct

 27 struct  stat
 28 {
 29   dev_t     st_dev;        //文件的设备编号
 30   ino_t     st_ino;        //节点 
 31   mode_t    st_mode;        
 32   nlink_t   st_nlink;
 33   uid_t     st_uid;
 34   gid_t     st_gid;
 35   dev_t     st_rdev;
 36   off_t     st_size;        //文件字节数(文件大小)
 37 #if defined(__rtems__)
 38   struct timespec st_atim;
 39   struct timespec st_mtim;
 40   struct timespec st_ctim;
 41   blksize_t     st_blksize;
 42   blkcnt_t  st_blocks;
 43 #else
 44   /* SysV/sco doesn't have the rest... But Solaris, eabi does.  */
 45 #if defined(__svr4__) && !defined(__PPC__) && !defined(__sun__)
 46   time_t    st_atime;
 47   time_t    st_mtime;
 48   time_t    st_ctime;
 49 #else
 50   time_t    st_atime;
 51   long      st_spare1;
 52   time_t    st_mtime;
 53   long      st_spare2;
 54   time_t    st_ctime;
 55   long      st_spare3;
 56   blksize_t st_blksize;
 57   blkcnt_t  st_blocks;
 58   long  st_spare4[2];
 59 #endif
 60 #endif
 61 };

exec函数族

exec后新进程保持原进程以下特征

     环境变量(使用了execle、execve函数则不继承环境变量);
     进程ID和父进程ID;
     实际用户ID和实际组ID;
     附加组ID;
     进程组ID;
     会话ID;
     控制终端;
     当前工作目录;
     根目录;
     文件权限屏蔽字;
     文件锁;
     进程信号屏蔽;
     未决信号;
     资源限制;
     tms_utime、tms_stime、tms_cutime以及tms_ustime值。
对打开文件的处理与每个描述符的exec关闭标志值有关,进程中每个文件描述符有一个exec关闭标志(FD_CLOEXEC),若此标志设置,则在执行exec时关闭该描述符,否则该描述符仍打开。除非特地用fcntl设置了该标志,否则系统的默认操作是在exec后仍保持这种描述符打开,利用这一点 可以实现I/O重定向

你可能感兴趣的:(Linux)