本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32047
示例:
./sum_program
int sum = 0;
for (int i = 1; i <= 1000; ++i) {
sum += i;
}
FILE *file = fopen("config.txt", "r");
if (file != NULL) {
// 读取文件内容
fclose(file);
}
printf("The sum is %d\n", sum);
总结:
状态 | 描述 |
---|---|
D(uninterruptible sleep) | 进程处于无法中断的睡眠状态,通常是因为正在执行阻塞的I/O操作 |
R(running or runnable) | 进程正在运行或者已经就绪等待运行,它在运行队列中等待获取CPU时间片 |
S(interruptible sleep) | 进程正在等待某个事件完成,例如等待I/O操作或信号量 |
T(stopped by job control signal) | 进程被作业控制信号(例如SIGSTOP)停止了,通常是由用户或调试器发出的停止信号 |
t(stopped by debugger during the tracing) | 进程被调试器在追踪期间停止了 |
W(paging) | 在早期的Linux内核中,表示进程正在进行页面交换操作(在2.6.XX内核中已经不再使用) |
X(dead) | 表示进程已经终止,这个状态通常不应该被看到 |
Z(defunct/“zombie”) | 表示进程已经终止,但是其父进程尚未回收相关资源,隐藏变成了僵尸进程 |
![image | 642x287](upload://4v7Eq9wY3GvEd7sksBO17xe7N1u.png) |
命令 | 说明 |
---|---|
ps | 进程列表快照 |
top | 交互式进程观测 |
kill | 结束进程 |
fg | 进程切换到前台 |
bg | 进程切换到后台 |
ctrl+z | 挂起进程 |
ps -ef
ps aux
ps -o pid,pidlist
kill PID xxx
输入操作指的是将外部数据输入到计算机系统中。常见的输入设备包括键盘、鼠标、扫描仪、麦克风等。例如,在键盘上输入文字时,这些文字被传输到计算机中,这就是一次输入操作。
输出操作指的是将计算机中的数据输出到外部设备。常见的输出设备包括显示器、打印机、扬声器等。例如,在屏幕上看到显示的图像或文字时,这就是一次输出操作。
块设备可以一次读取或写入固定大小的数据块。硬盘、光盘和闪存都是典型的块设备。这些设备通常用于存储大量数据,并允许随机访问。
字符设备一次处理一个字符或字节的数据。键盘、鼠标和串行端口都是字符设备。这些设备通常用于处理较小的数据流,并允许顺序访问。
在同步I/O操作中,I/O操作需要等待数据传输完成,才能继续进行后续的处理。这意味着在I/O操作完成之前,CPU会一直处于等待状态。这种方式可能会导致CPU资源的浪费,因为CPU在等待过程中无法执行其他任务。
在异步I/O操作中,I/O操作在后台进行,CPU可以继续执行其他任务而不必等待数据传输完成。异步I/O可以提高系统的效率和响应速度,因为它允许并行处理多个任务。
中断驱动I/O是通过硬件中断来实现的。当I/O设备准备好数据时,会发送一个中断信号给CPU,通知CPU进行处理。这样,CPU可以在等待I/O操作的同时处理其他任务,而不会浪费时间。
DMA是一种特殊的I/O技术,它允许I/O设备直接与内存进行数据交换,而无需经过CPU。这可以大大提高数据传输的效率,因为数据不需要通过CPU的控制。
打开一个文件并读取或写入数据时,就是在进行I/O操作。比如在C语言中,使用 fopen
打开文件,使用 fread
和 fwrite
进行数据读写。
FILE *file = fopen("example.txt", "r");
char buffer[100];
fread(buffer, sizeof(char), 100, file);
fclose(file);
网络通信也是一种常见的I/O操作。比如在网络编程中,使用 send
和 recv
函数发送和接收数据包。
int sock = socket(AF_INET, SOCK_STREAM, 0);
connect(sock, (struct sockaddr*)&server_addr, sizeof(server_addr));
send(sock, "Hello", 5, 0);
recv(sock, buffer, 100, 0);
close(sock);
【霍格沃兹测试开发】7天软件测试快速入门带你从零基础/转行/小白/就业/测试用例设计实战
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)
【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试
【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff
【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享
【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装
【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?
【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!
【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我
【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化
【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试
【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer !
【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置
【霍格沃兹测试开发】如何用Postman 做接口测试,从入门到实战/ 接口抓包(最新最全教程)