std::experimental::filesystem:: is_block_file
|
Definido en el encabezado
<experimental/filesystem>
|
||
|
bool
is_block_file
(
file_status s
)
;
|
(1) | (filesystem TS) |
|
bool
is_block_file
(
const
path
&
p
)
;
bool is_block_file ( const path & p, error_code & ec ) noexcept ; |
(2) | (filesystem TS) |
Comprueba si el estado de archivo o la ruta dados corresponden a un archivo especial de bloque, como si fuera determinado por el estándar POSIX S_ISBLK . Ejemplos de archivos especiales de bloque son dispositivos de bloque como / dev / sda o / dev / loop0 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. La sobrecarga que no lanza excepciones devuelve false si ocurre un error.
Excepciones
Notas
La información proporcionada por esta función generalmente también se ofrece como un subproducto de la iteración de directorios. Durante la iteración de directorios, llamar
is_block_file(*iterator)
es menos eficiente que
is_block_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; // alternative: switch(s.type()) { case fs::file_type::regular: ... } if (fs::is_regular_file(s)) std::cout << " is a regular file\n"; if (fs::is_directory(s)) std::cout << " is a directory\n"; if (fs::is_block_file(s)) std::cout << " is a block device\n"; if (fs::is_character_file(s)) std::cout << " is a character device\n"; if (fs::is_fifo(s)) std::cout << " is a named IPC pipe\n"; if (fs::is_socket(s)) std::cout << " is a named IPC socket\n"; if (fs::is_symlink(s)) std::cout << " is a symlink\n"; if (!fs::exists(s)) std::cout << " does not exist\n"; } int main() { // create files of different kinds fs::create_directory("sandbox"); std::ofstream("sandbox/file"); // create regular file 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"); // demo different status accessors for (auto it = fs::directory_iterator("sandbox"); it != fs::directory_iterator(); ++it) demo_status(*it, it->symlink_status()); // use cached status from directory entry demo_status("dev/null", fs::status("/dev/null")); // direct calls to status demo_status("dev/sda", fs::status("/dev/sda")); demo_status("sandbox/no", fs::status("/sandbox/no")); // cleanup close(fd); fs::remove_all("sandbox"); }
Salida posible:
"sandbox/file" is a regular file "sandbox/dir" is a directory "sandbox/pipe" is a named IPC pipe "sandbox/sock" is a named IPC socket "sandbox/symlink" is a symlink "dev/null" is a character device "dev/sda" is a block device "sandbox/no" does not exist
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 caracteres
(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
)
|