こんにちは私はシステムコールを理解しようとしています:UNIX上のディレクトリとファイル..私はこのウェブサイトを見つけました。彼らは彼ら自身の例でいくつかのコールを説明していますが、これらのコードスニペットを理解していません..
void state (char *file)
{
struct stat buf;
struct passwd *pw;
struct group *gr;
int i;
if (stat(file, &buf)==-1)
{
perror(file);
exit(-1);
}
printf ("file: %s\n", archivo);
printf ("\t resides in the device: %d, %d\n",(buf.st_dev & 0xFF00)>>8, buf.st_dev & 0x00FF);
printf ("\t i-node number: %d\n", buf.st_ino);
printf ("\t type: ");
switch (buf.st_mode & S_IFMT)
{
case S_IFREG: printf ("ordinario\n"); break;
case S_IFDIR: printf ("directorio\n"); break;
case S_IFCHR: printf ("tipo caracter\n"); break;
case S_IFBLK: printf ("tipo bloque\n"); break;
case S_IFIFO: printf ("FIFO\n"); break;
}
if (buf.st_mode & S_ISUID) printf ("\tSUID activo");
if (buf.st_mode & S_ISGID) printf ("\tSGID activo");
if (buf.st_mode & S_ISVTX) printf ("\tStiky bit activo\n");
/* Permissions access */
printf ("\tPermission: 0%o ",buf.st_mode & 0777);
for (i=0; i<9; i++)
if (buf.st_mode & (0400>>i)) printf ("%c", permisos[(8-i)%3]);
else printf ("-"); ....
どのデバイスファイルが欠落しているかを確認するための比較がわかりません..誰かが私を理解するのを手伝ってくれるでしょうか?特にここに..
printf ("\tReside en el dispositivo: %d, %d\n", (buf.st_dev & 0xFF00)>>8,
buf.st_dev & 0x00FF);
/* Permissions */
printf ("\tPermission: 0%o ",buf.st_mode & 0777);
for (i=0; i<9; i++)
if (buf.st_mode & (0400>>i)) printf ("%c", permisos[(8-i)%3]);
else printf ("-");
両側で行われた比較の助けや説明を歓迎しますPD:私の英語=Pでごめんなさい
estado.cと呼ばれるコード例1全体が表示されるリンク