std::experimental::filesystem:: is_character_file
|
Definido en el encabezado
<experimental/filesystem>
|
||
|
bool
is_character_file
(
file_status s
)
;
|
(1) | (filesystem TS) |
|
bool
is_character_file
(
const
path
&
p
)
;
bool is_character_file ( const path & p, error_code & ec ) ; |
(2) | (filesystem TS) |
Comprueba si el estado de archivo o la ruta proporcionada corresponde a un archivo especial de caracteres, como si fuera determinado por POSIX S_ISCHR . Ejemplos de archivos especiales de caracteres son dispositivos de caracteres como / dev / null , / dev / tty , / dev / audio , o / dev / nvram en Linux.
Contenidos |
Parámetros
| s | - | estado del archivo a verificar |
| p | - | ruta a examinar |
| ec | - | parámetro de salida para reporte de errores en la sobrecarga no lanzadora |
Valor de retorno
true si el archivo indicado por p o si el tipo indicado por s se refiere a un dispositivo de bloque, false en caso contrario. La sobrecarga que no lanza excepciones devuelve false si ocurre un error.
Excepciones
Notas
La información proporcionada por esta función normalmente también se ofrece como subproducto de la iteración de directorios. Durante la iteración de directorios, llamar
is_character_file(*iterator)
es menos eficiente que
is_character_file(iterator->status())
.
Ejemplo
#include <cstdio> #include <cstring> #include <experimental/filesystem> #include <fstream> #include <iostream> #include <sys/socket.h> #include <sys/stat.h> #include <sys/un.h> #include <unistd.h> namespace fs = std::experimental::filesystem; void demo_status(const fs::path& p, fs::file_status s) { std::cout << p; // alternativa: switch(s.type()) { case fs::file_type::regular: ... } if (fs::is_regular_file(s)) std::cout << " es un archivo regular\n"; if (fs::is_directory(s)) std::cout << " es un directorio\n"; if (fs::is_block_file(s)) std::cout << " es un dispositivo de bloque\n"; if (fs::is_character_file(s)) std::cout << " es un dispositivo de caracteres\n"; if (fs::is_fifo(s)) std::cout << " es una tubería IPC con nombre\n"; if (fs::is_socket(s)) std::cout << " es un socket IPC con nombre\n"; if (fs::is_symlink(s)) std::cout << " es un enlace simbólico\n"; if (!fs::exists(s)) std::cout << " no existe\n"; } int main() { // crear archivos de diferentes tipos fs::create_directory("sandbox"); std::ofstream("sandbox/file"); // crear archivo regular fs::create_directory("sandbox/dir"); mkfifo("sandbox/pipe", 0644); struct sockaddr_un addr; addr.sun_family = AF_UNIX; std::strcpy(addr.sun_path, "sandbox/sock"); int fd = socket(PF_UNIX, SOCK_STREAM, 0); bind(fd, (struct sockaddr*)&addr, sizeof addr); fs::create_symlink("file", "sandbox/symlink"); // demostrar diferentes accesores de estado for (auto it = fs::directory_iterator("sandbox"); it != fs::directory_iterator(); ++it) demo_status(*it, it->symlink_status()); // usar estado en caché de la entrada del directorio demo_status("dev/null", fs::status("/dev/null")); // llamadas directas a status demo_status("dev/sda", fs::status("/dev/sda")); demo_status("sandbox/no", fs::status("/sandbox/no")); // limpieza close(fd); fs::remove_all("sandbox"); }
Salida posible:
"sandbox/file" es un archivo regular "sandbox/dir" es un directorio "sandbox/pipe" es una tubería IPC con nombre "sandbox/sock" es un socket IPC con nombre "sandbox/symlink" es un enlace simbólico "dev/null" es un dispositivo de caracteres "dev/sda" es un dispositivo de bloque "sandbox/no" no existe
Véase también
|
determina los atributos del archivo
determina los atributos del archivo, verificando el destino del enlace simbólico (función) |
|
|
representa el tipo de archivo y permisos
(clase) |
|
|
verifica si el estado del archivo es conocido
(función) |
|
|
verifica si la ruta dada se refiere a un dispositivo de bloque
(función) |
|
|
verifica si la ruta dada se refiere a un directorio
(función) |
|
|
verifica si la ruta dada se refiere a una tubería con nombre
(función) |
|
|
verifica si el argumento se refiere a un archivo
otro
(función) |
|
|
verifica si el argumento se refiere a un archivo regular
(función) |
|
|
verifica si el argumento se refiere a un socket IPC con nombre
(función) |
|
|
verifica si el argumento se refiere a un enlace simbólico
(función) |
|
|
verifica si la ruta se refiere a un objeto del sistema de archivos existente
(función) |
|
|
estado en caché del archivo designado por esta entrada de directorio
symlink_status en caché del archivo designado por esta entrada de directorio (función miembro pública de
std::experimental::filesystem::directory_entry
)
|