环境:Vmware Workstation;CentOS-6.4-x86_64
说明:
1、Linux下所有内容都是文件,文件都有文件描述符。
2、文件描述符:就是打开的文件编号。
3、一个进程会默认打开三个文件:标准输入(stdin),标准输出(stdout),标准出错(stderr)。
4、默认打开的三个文件,头文件为unistd.h
程序:
作用:验证进程默认打开的三个文件的文件描述符为0、1、2。
图解说明:
步骤:
1、书写main.c:
#include <unistd.h> // 包含必要的头文件
#include <stdio.h>
int main(int argc, char *args[])
{
// STDIN_FILENO标准输入的文件描述符
printf("STDIN_FILENO = %d\n", STDIN_FILENO);
// STDOUT_FILENO标准输出的文件描述符
printf("STDOUT_FILENO = %d\n", STDOUT_FILENO);
// STDERR_FILENO标准出错的文件描述符
printf("STDERR_FILENO = %d\n", STDERR_FILENO);
return 0;
}
2、书写makefile:
.SUFFIXES:.c .o
CC=gcc
SRCS=main.c
OBJS=$(SRCS:.c=.o)
EXEC=main
start: $(OBJS)
$(CC) -o $(EXEC) $(OBJS)
@echo "-----------------------------OK-----------------------"
.c.o:
$(CC) -Wall -o $@ -c $<
clean:
rm -rf $(EXEC) $(OBJS)
3、编译并执行程序:
[negivup@negivup mycode]$ make
gcc -Wall -o main.o -c main.c
gcc -o main main.o
-----------------------------OK-----------------------
[negivup@negivup mycode]$ ./main
STDIN_FILENO = 0
STDOUT_FILENO = 1
STDERR_FILENO = 2
从程序的执行结果中可以看出,标准输入的文件描述符是0,标准输出的文件描述符是1,标准出错的文件描述符是2。
PS:根据传智播客视频学习整理得出。