APUE-4.3打印文件类型

本文介绍了一个简单的C语言程序,用于检测文件系统中不同类型的文件,如普通文件、目录、字符设备等,并通过命令行参数传递文件路径进行检测。程序使用了lstat函数获取文件的状态信息,并根据文件类型进行判断。

创建文件4.3_file_types.c,内容为

#include <sys/types.h>
#include <sys/stat.h>
#include "apue.h"
int main(int argc, char *argv[]) {
    int i;
    struct stat buf;
    char *ptr;
    for (i = 1; i < argc; i++) {
        printf("%s: ", argv[i]);
        if (lstat(argv[i], &buf) < 0) {
            err_ret("lstat error");
            continue;
        }
        if (S_ISREG(buf.st_mode)) ptr = "regular";
        else if (S_ISDIR(buf.st_mode)) ptr = "directory";
        else if (S_ISCHR(buf.st_mode)) ptr = "character special";
        else if (S_ISBLK(buf.st_mode)) ptr = "block special";
        else if (S_ISFIFO(buf.st_mode)) ptr = "fifo";
#ifdef S_ISLNK
        else if (S_ISLNK(buf.st_mode))ptr = "symbolic link";
#endif
#ifdef S_ISSOCK
        else if (S_ISSOCK(buf.st_mode)) ptr = "socket";
#endif
        else ptr = "** unknown mode **";
        printf("%s\n", ptr);
    }
    exit(0);
}

编译

gcc 4.3_file_types.c -o 4.3_file_types -lapue

运行

./4.3_file_types /etc/passwd /etc /etc/log /dev/tty /var/lib/oprofile/opd_pipe /dev/sr0 /dev/cdrom

运行结果为:
这里写图片描述

凌云面试自查(操作系统) 1.Linux基础 1.1Linux 如何查看磁盘分区大小, 如何查看、修改网卡配 置 1.2如何修改网卡的IP、子网掩码、默认网关、DNS 1.3查看当前操作系统内核信息 1.4当前操作系统版本信息 1.5查看内存信息 1.6查看进程占用的文件 1.7查看进程占用的地址空间 1.8查看cpu,以及系统硬件信息 1.9查找所有.c文件中含有“hello world”的文件 1.10操作系统五大功能 1.11进程调度有哪些调度算法 1.12内存管理有哪些调度算法 1.13什么是软链接, 什么是硬链接 1.14什么是可重入函数, 不可重入函数? 哪些原因导致函数 不可重入? 1.15.gdb是什么? 怎么使用的? 1.16.linux下有哪些设备? 1.17.什么是VFS(虚拟文件系统)? 1.18.什么是块设备和字符设备和网络设备? 2.APUE 2.1.什么是文件IO, IO常用的系统调用有哪些? 如何实现 文件拷贝? 2.2.系统调用(系统API, 文件IO)和标准IO(库函数)有什么区 别? 什么是缓冲、缓冲有哪些 2.3.么是同步, 异步? 什么是阻塞和非阻塞? 2.4. 怎么将socket设置为阻塞/非阻塞模式? 2.5.说一下五种I/O模型? (不是select, poll, epoll) 2.6. 描述select, poll, epoll的工作原理及区别? 2.7.什么是内核态和用户态? 内核到用户的转换 3.多进程与多线程 3.1. 进程和线程的概念 3.2. 线程和进程有什么区别 3.3. 什么时候使用多进程, 什么时候使用多线程 3.4.进程三态与五态是什么? 3.5. 创建进程有哪些方式(了解即可) 3.6.什么是进程上下文与中断上下文? 3.7.fork和vfork有什么区别? 为什么又fork还要vfork? 3.8.什么是写时拷贝技术? 3.9.什么是孤儿进程, 什么是僵尸进程, 如何避免产生僵 尸进程? 3.10.如何知道进程和线程是否已经退出? 3.11.一个系统最大可以启动多少个线程? 怎么设置线程的 优先级? 3.12.多线程为什么要设置属性, 为什么设置栈的大小? 3.13.线程的堆栈大小要怎么设置, 默认是多少, 最小是多少? 3.14.怎么保证主线程创建的子线程先执行? 线程间通信有 哪些方式? 3.15.什么是线程的同步与互斥? 互斥锁, 条件变量和信号量 的区别? 3.16.什么是临界区, 什么是临界资源? 3.17.什么是线程池? 3.18. 进程间通信有几种? 3.19.什么是死锁? 死锁产生的原因? 死锁的产生有哪些条 件? 怎么解决死锁? 3.20.线程间怎么进行通信以及同步 3.21.线程同步实现的方式? 3.22.Linux 内核中有哪几种锁; 自旋锁与互斥锁有什么区 别? 3.23.条件变量和信号量的区别 3.24.条件变量和互斥锁为什么要配合使用 3.25信号与信号量的区别 4.BSP 4.1描述一下字符设备驱动编写的流程 4.2什么是中断的上半部, 什么是中断的下半部? 4.3.中断的下半部有哪些实现机制? 4.4.Linux 系统启动流程及U-boot
09-11
源码地址: https://pan.quark.cn/s/a4b39357ea24 欧姆龙触摸屏编程软件MPTST 5.02是专门为欧姆龙品牌的工业触摸屏而研发的编程解决方案,它赋予用户在直观界面上构建、修改以及排错触摸屏应用程序的能力。 该软件在工业自动化领域具有不可替代的地位,特别是在生产线监视、设备操控以及人机互动系统中发挥着核心作用。 欧姆龙MPTST(Machine Process Terminal Software Touch)5.02版本配备了多样化的功能,旨在应对不同种类的触摸屏项目要求。 以下列举了若干核心特性:1. **图形化编程**:MPTST 5.02采用图形化的编程模式,允许用户借助拖拽动作来设计屏幕布局,设定按钮、滑块、指示灯等组件,显著简化了编程流程,并提升了工作效率。 2. **兼容性**:该软件能够适配欧姆龙的多个触摸屏产品线,包括CX-One、NS系列、NJ/NX系列等,使用户可以在同一个平台上完成对不同硬件的编程任务。 3. **数据通信**:MPTST 5.02具备与PLC(可编程逻辑控制器)进行数据交互的能力,通过将触摸屏作为操作界面,实现生产数据的显示与输入,以及设备状态的监控。 4. **报警与事件管理**:软件中集成了报警和事件管理机制,可以设定多种报警标准,一旦达到预设条件,触摸屏便会展示对应的报警提示,助力操作人员迅速做出响应。 5. **模拟测试**:在设备实际连接之前,MPTST 5.02支持用户进行脱机模拟测试,以此验证程序的正确性与稳定性。 6. **项目备份与恢复**:为了防止数据遗失,MPTST 5.02提供了项目文件的备份及还原功能,对于多版本控制与团队协作具有显著价值。 7. **多语言支持**:针对全球化的应...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值