栗子:设计一个程序,应用system函数列出当前目录下的文件信息,以及系统“/dev/sda1”和“/dev/lp0”的文件信息。
程序:
运行结果
各种文件类型的含义:
| 命令 | 作用 |
|---|---|
| 普通文件 | 权限的十个字符中的第一位是“-”的文件 |
| 目录文件 | 权限的十个字符中的第一位是“d”的文件 |
| 硬链接文件 | 除了显示的文件数量,其他都和某个普通文件一模一样的文件 |
| 软件链接文件 | 权限的十个字符中的第一位是“l”的文件 |
| 块设备文件 | 权限的十个字符中的第一位是“b”的文件 |
| socket文件 | 权限的十个字符中的第一位是“s”的文件 |
| 字符设备文件 | 权限的十个字符中的第一位是“c”的文件 |
| 管道文件 | 权限的十个字符中的第一位是“p”的文件 |
| setUid可执行文件 | 权限的十个字符中的第四位是“s”的文件 |
| setGid可执行文件 | 权限的十个字符中的第七位是“s”的文件 |
| setUid加setGid文件 | 权限的十个字符中的第四位和第七位是“l”的文件 |
system函数简介
| 所需头文件 | #include<stdlib.h> |
|---|---|
| 函数功能 | 在进程中开始另一个进程 |
| 函数原型 | int system(const char *string) |
| 函数传入值 | 系统变量 |
| 函数返回值 | 执行成功则返回执行Shell命令后的返回值;调用/bin/sh失败后返回127;其他原因失败则返回-1;参数string为空(NULL),则返回非零值 |
| 备注 | system()调用fork()产生子进程,子进程调用/bin/sh -c string来执行参数,string字符串所代表的命令,此命令执行完后随即返回原调用的进程。如果调用成功,返回Shell命令后的返回值可能也是127,因此,最好能检差errno来确定的执行情况 |