Linux(printf函数输出问题,exit ,主函数参数,fork函数,文件系统调用)

//printf函数输出问题

//printf函数并不会直接将数据输出到屏幕 而是先放到缓冲区 只有下面三种情况满足才会出现到屏幕

//1 缓冲区满

//2 强制刷新缓冲区 fflush

//3 进程结束

//fflush(stdout)输出到屏幕

//exit 结束当前进程 C标准库函数

//_exit 结束当前进程 并清空缓冲区内容 Unix系统调用

//exit() 会执行用户态的资源清理操作 再调用内核级别的进程终止逻辑 执行步骤

//1 执行用户注册的"退出处理函数"

//2 刷新并关闭标准I/O流(把缓冲区内容强制刷新到终端或文件中)

//3 清理进程私有资源

//4 调用 _exit()触发内核回收

//_exit() 直接触发内核回收 会跳过所有的用户态操作 直接通知内存停止进程

//1 不执行退出处理函数

//2 不执行刷新标准I/O缓冲区

//用法

//1 普通单进程程序 优先使用exit

//2 多进程程序(父/子进程)子进程优先使用_exit() , 避免干扰父进程的用户态资源,使用exit()

// exit _exit

//函数类型 C标准库函数 系统调用

//标准I/O缓冲区 强制刷新并关闭 不刷新 直接丢弃数据

//主函数参数介绍

//int main(int argc,char * argv\[\],char*envp\[\])

//argc 参数个数

//argv 参数内容数组

//envp 环境变量

/复制进程 fork

//fork();

//头文件 pid_t fork (void)

//返回值 返回的是整数类型 有三种返回情况

//1 在父进程中 返回子进程的PID(正整数) 用于父进程的识别和子进程的管理

//2 在子进程中 PID的返回值是0 用于确认子进程的身份

//3 如果是-1 表示fork失败(内存不足,系统进程达到上限),设置错误原因给到系统全局变量errno,表示错误原因

//fork复制出的子进程 会复制父进程的所有内容(缓冲区等等)

//僵死进程 子进程先于父进程结束 父进程没有获取子进程的退出码 子进程变成了僵死进程

//defunct 表示该进程成为了僵死进程

//父进程先于子进程结束 子进程会变成孤儿进程 会被进程资源管理器接管后继续运行

//walt 会让父进程等待子进程运行完成之后运行 放在子进程中无法实现堵塞 而且walt参数会接收子进程的退出码

// exit() 让进程退出 参数为该进程的退出码

// getpid() 获得进程号 getppid() 获得副进程号 若父进程消失,子进程会随机继承父进程的退出码

//walt 获取的退出码 如果以%d表示是10进制 但是计算机存储为二进制 所有要右移8位 (等待子进程的退出码)

//第2种输出3的方法

// 所有宏 WIFEXITED (判断进程是否正常退出) 返回值为true/false;

// 使用宏 WEXITSTATUS (获取正常退出码)

//文件系统调用 fopen fclose fread fwrite

// fopen 调用open这个函数

//open函数的返回值是打开的文件的文件描述符 至于会不会创建,跟打开文件时的创建

//3个参数分别表示 文件名 对文件的操作 已经如果需要创建文件时需要的权限

//write函数参数分别为 写入的文件的文件描述符 写入的内容 写入的字符串长度

相关推荐
七牛云行业应用1 小时前
DeepSeek Harness(dsh)安装完整指南:Windows、macOS、Linux 三平台 + 桌面端与 Web 端全覆盖
linux·windows·macos·ai·ai编程
~城南花已开~2 小时前
Intel E810 SR-IOV VF Spoofcheck 防伪造测试-KVM3
服务器·网络·笔记·学习·ubuntu·etl工程师
乌恩大侠2 小时前
Supermicro 发布六款 NVIDIA ARC 服务器:从 1U 边缘基站到 4U 八卡 AI-RAN 平台,全面对比
运维·服务器·人工智能
十年磨一剑~2 小时前
APT 仓库包查看方法文档
linux·ubuntu
DYWorker0012 小时前
第 1-1 课:启动编排:内核如何把自己装配起来
linux
谢白羽2 小时前
从传统运维到 AI Infra: K8s 上调度 100 张 GPU踩坑笔记
运维·人工智能·缓存·kubernetes·vllm·sglang·vllm-omni
ai_coder_ai3 小时前
使用Web IDE边写自动化脚本
运维·前端·自动化
wacsii3 小时前
【Linux基础开发工具(五)】Git版本控制器从入门到实战:核心操作三板斧与新手避坑指南
linux·运维·服务器
水饺编程3 小时前
第2章:Linux 基础,解压缩【.tar.gz】压缩包
linux·c语言·汇编
zhongben123_3 小时前
从零开发一个打车APP:技术选型、系统架构与成本评估指南
大数据·运维·ios·系统架构·uni-app·web app