- 浏览: 154228 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
lyaqys:
lz实现的OptimisticExclusiveLock有点问 ...
java park/unpark 【java并发】基于JUC CAS原理,自己实现简单独占锁
if(NULL == fgets(msg,100,stdin)){
18
19 // msg 末尾有换行副(\n\0)
1.STDIN_FILENO的作用
STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。
操作系统一级提供的文件API都是以文件描述符来表示文件。STDIN_FILENO就是标准输入设备(一般是键盘)的文件描述符。
2.区别
1)数据类型不一致:
stdin类型为 FILE*
STDIN_FILENO类型为 int
使用stdin的函数主要有:fread、fwrite、fclose等,基本上都以f开头
使用STDIN_FILENO的函数有:read、write、close等
2)stdin等是FILE *类型,属于标准I/O,高级的输入输出函数。在<stdio.h>。
STDIN_FILENO等是文件描述符,是非负整数,一般定义为0, 1, 2,属于没有buffer的I/O,直接调用系统调用,在<unistd.h>。
3)STDIN_FILENO 是标准输入的文件描述符
详见/usr/include/unistd.h
代码:
/* Standard file descriptors. */
#define STDIN_FILENO 0 /* Standard input. */
#define STDOUT_FILENO 1 /* Standard output. */
#define STDERR_FILENO 2 /* Standard error output. */
4)层次不一样。STDIN 属于标准库处理的输入流,其声明为 FILE 型的,对应的函数前面都有f开头,如fopen/fread/fwrite/fclose 标准库调用等
STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。
标准库内封装了系统 API 调用,如 fread 内部实现调用 read。
5)操作系统一级提供的文件API都是以文件描述符来表示文件。STDIN_FILENO就是标准输入设备(一般是键盘)的文件描述符。
6)曾经很纳闷,为什么一个整形fd(STDIN_FILENO=0)就可以代表一个打开的文件呢?
后来明白了,和我们的手机号是类似的,手机号只是一个9位数的整形,但是在移动通话网络里,它就可以用来区分不同的手机终端。
标准C++一级提供的文件操作函数库都是用FILE*来表示文件,stdin就是指向标准输入设备文件的FILE*。
发表评论
-
c语言链表实现学生管理
2013-10-28 14:13 902#include<stdio.h> #includ ... -
简单的linux -c http-client
2013-10-23 15:35 4732#include<stdio.h> #includ ... -
毗连“"aa"”和“"bb"”不能给出一个有效的预处理标识符,gcc编译错误表
2013-10-01 18:54 3002gcc bug : ##’ cannot appear at ... -
负数转化为整数
2013-10-01 12:02 1362负数转化为整数 int a = -1321313; 12 ... -
c++ 动态内存分配
2013-08-28 22:35 846先看一段代码: [cpp] view plaincopy ... -
文件结束符EOF,system("stty raw")
2013-08-14 10:47 1562>> 关于文件结束符EOF EOF 是 End O ... -
c 专家编程
2013-08-13 17:06 693总结: -2> int * a = NUL ... -
c语言api
2013-07-31 21:06 679原型:extern int isalnum(int c); 用 ... -
c 语言无符号类型使用注意,类型升级
2013-07-30 14:37 629#define SS sizeof(int) 5 int ... -
判断两个一个链表是否存在循环(C专家编程中的问题)
2013-06-24 15:35 916判断两个一个链表是否存在循环(C专家编程中的问题) #incl ... -
atoi源码
2013-05-14 19:32 1262原文: http://blog.csdn.net/eroswa ... -
c语言特殊字符串复制
2013-05-06 01:59 8712.strcpy和memcpy主要有以下3方面的区别。 2.1 ... -
《APUE》:线程和fork(父子进程锁)
2013-04-29 21:07 1179《Unix环境高级编程》这本书附带了许多短小精美的小程序,我在 ... -
Linux多线程同步的几种方式
2013-04-22 22:49 779Linux多线程同步的几种方式 线程的最大特点是资 ... -
sphinx 安装
2013-04-10 19:54 538[@zw-76-80 soft]$ rpm -ivh MySQ ... -
防止pause和alrm产生竞争
2013-04-08 22:51 8371 #include<stdio.h> 2 ... -
关于linux环境下信号SIGCHLD的排队机制
2013-04-07 22:13 1545下面是关于在SIGCHLD的一遍网上的摘要,但是在linux中 ... -
alarm与pause
2013-04-07 20:12 7721 #include<stdio.h> 2 ... -
Linux下的定时器
2013-04-07 20:05 650Linux下的定时器有两种,以下分别介绍: 1、 ... -
linux 信号量
2013-04-04 22:24 681目录 SIGCHLD 描述 编辑本段SIG ...
相关推荐
res=tcgetattr(STDIN_FILENO, &org;_opts); assert(res==0); //从新设置终端参数 memcpy(&new;_opts, &org;_opts, sizeof(new_opts)); new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ...
### Linux下实现输入回显屏蔽及输入无需回车解析 #### 概述 在Linux环境中,经常需要开发一些特殊的应用程序或脚本,比如终端控制、游戏开发等,在这些场景中,我们可能需要对标准输入进行自定义处理,例如屏蔽...
本文将深入探讨如何在QT中进行父子进程间的通信,特别是通过`QProcess`类的`writeData`方法发送数据以及子进程通过标准输入(`STDIN_FILENO`)接收数据。 首先,我们来看`QProcess`类。`QProcess`是QT提供的用于...
源码mac swift console,main.swift 主要是做逻辑判断的,File.c 是处理键盘输入和获取光标位置 打砖块-Bridging-... select(STDIN_FILENO+1, &rdfs, NULL, NULL, &tv); return FD_ISSET(STDIN_FILENO, &rdfs); }
当一个文件对象通过标准输入、输出或错误流(stdin, stdout, stderr)与终端相连时,`isatty()`通常会返回`True`。例如,在命令行中运行一个Python脚本时,这些流默认是与终端关联的。如果文件对象是一个普通的文本...
调用`select(STDIN_FILENO + 1, &readfds, NULL, NULL, NULL)`,这里`STDIN_FILENO + 1`是最大的文件描述符加一,表示监控所有小于它的文件描述符。 4. **处理用户输入**: 如果`select`返回非零,表示有数据可读...
### tcgetattr函数和tcsetattr函数的深入解析及应用 #### 一、tcgetattr与tcsetattr函数简介 在Linux系统编程中,终端设备是极其重要的一个组成部分。为了方便地通过程序来获取和修改终端的各种参数,Linux提供了...
dup2(sockets[1], STDIN_FILENO); // 将写端复用为标准输入 close(sockets[1]); // 关闭已复用的写端 // 在这里执行子进程的操作 } else { // 父进程 close(sockets[1]); // 关闭父进程的写端 dup2(sockets...
该问题描述了在调用`_setmode(_fileno(stdout), _O_U8TEXT)`后,尝试使用`printf`函数会导致程序崩溃。这涉及到文件模式设置、文本和二进制模式转换以及Unicode编码,特别是UTF-8编码在输出流中的应用。 首先,`_...
POSIX.1标准中,这些常数用`STDIN_FILENO`、`STDOUT_FILENO`和`STDERR_FILENO`表示。文件描述符的范围在0到`OPEN_MAX`之间,早期系统可能限制为19,现代系统则通常扩展到63或更高,具体取决于系统配置。 【open函数...
POSIX.1标准中,这些值通常用常量STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO表示。文件描述符的范围通常在0到OPEN_MAX之间,早期的UNIX系统限制为19,但现在许多系统已扩大到更高的数值。 3. **open函数**:open...
在POSIX.1标准中,0、1、2分别代表标准输入(STDIN_FILENO)、标准输出(STDOUT_FILENO)和标准错误(STDERR_FILENO)。文件描述符的范围通常是从0到OPEN_MAX,现代系统中这个上限通常设置得更高,比如256。 open...
它们分别由文件描述符STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO标识,并通过预定义的文件指针stdin、stdout和stderr引用。这些文件指针定义在头文件中,是进行基本输入输出操作的基础。 标准I/O库引入缓存机制来...
- 标准输入(STDIN_FILENO)、标准输出(STDOUT_FILENO)和标准错误输出(STDERR_FILENO)的文件描述符分别是0、1和2。 - 可以使用`dup2`系统调用来重定向输出,如将标准输出重定向到文件描述符6对应的文件。 ...
write(STDIN_FILENO, "\n", 1); // 添加换行符 } int main() { sendChar('汉'); // 汉字'汉' return 0; } ``` 请注意,上述代码片段仅作为示例,实际应用中可能需要处理更多的细节,如延迟、按键组合等。此外,...
`fileno`函数是C语言标准库stdio.h中的一部分,它用于获取与`FILE`类型指针关联的文件描述符。在操作系统层面,文件描述符是一种标识文件或套接字等I/O资源的整数。当我们在C程序中使用`fopen`打开一个文件并获得一...