GNU/Linux >> Belajar Linux >  >> Ubuntu

Perintah Yang Mendeteksi Jika Laci Cd Terbuka Atau Tertutup?

Apakah ada perintah yang dapat Anda jalankan dalam skrip shell yang akan mendeteksi jika baki CD terbuka atau tertutup, dan mengembalikan 1 atau 0 tergantung pada apakah itu (atau sesuatu yang mudah ditafsirkan)?

Saat ini, saya sedang menjalankan perintah terbuka, dan menghitung berapa lama waktu yang dibutuhkan untuk mengeksekusi. Jika hampir instan, itu terbuka. Jika perlu waktu, itu terbuka dan sekarang ditutup.

Saya ingin metode yang tidak melibatkan perubahan status saat ini – cukup dengan mendeteksinya.

Jawaban yang Diterima:

Saya menemukan solusi kecil yang bagus di sini. Kode C di bawah ini, minimal diubah dari situs yang ditautkan, akan mengembalikan kode keluar jika baki terbuka dan 1 jika tidak.

Jadi, simpan kode ini sebagai sesuatu (mis. foo.c ) dan kompilasi dengan perintah ini:

gcc -o trayopen foo.c

Kemudian, salin executable yang dikompilasi, trayopen ke /usr/bin :

sudo cp trayopen /usr/bin

Anda seharusnya tidak dapat melakukan hal-hal seperti

trayopen /dev/sr0 && echo closed

Atau, lebih lengkap:

#!/bin/sh
if trayopen /dev/sr0
then
    echo "Tray is open."
else
    echo "Tray is closed."
fi

Kode:

#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/cdrom.h>

int main(int argc,char **argv) {
  int cdrom;
  int status=1;

  if (! argv[1] ){
    printf("Usage : trayopen [device]\n");
    printf("Result: Returns a 0 if the tray was open and 1 if it was closed\n");
    exit(2);
  }

  if ((cdrom = open(argv[1],O_RDONLY | O_NONBLOCK)) < 0) {
    printf("Unable to open device %s. Provide a device name (/dev/sr0, /dev/cdrom) as a parameter.\n",argv[1]);
    exit(2);
  }
  /* Check CD tray status */
  if (ioctl(cdrom,CDROM_DRIVE_STATUS) == CDS_TRAY_OPEN) {
    status=0;
  }

  close(cdrom);
  exit(status);
}

Ubuntu
  1. 8 perintah menyeramkan yang menghantui terminal

  2. Linux setara dengan perintah terbuka Mac OS X

  3. Buka file yang diberikan oleh hasil perintah di vim

  1. Cara Menggunakan Perintah Sudo di Linux

  2. Bagaimana Meninjau Keadaan Saat Ini Dari Open Source Vs. Driver Grafis Sumber Tertutup?

  3. Apa perintah pohon di Ubuntu?

  1. Cara Menggunakan Perintah vmstat

  2. Perintah Linux pwd

  3. Cara Menggunakan Perintah nslookup