#include <sys/ioctl.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/ustat.h> #include <fcntl.h> #include <unistd.h> #include <linux/cdrom.h> #include <stdio.h> #include <errno.h> int eject(void);
#include "eject.h" int main() { if (eject() != 0) { perror("error\n"); return 1; } return 0; }
#include <sys/ioctl.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/ustat.h> #include <fcntl.h> #include <unistd.h> #include <linux/cdrom.h> #include <stdio.h> #include <errno.h> char *cd_device = "/dev/cdrom"; int cdeject(void) { int cd_fd; struct stat lstat; struct ustat lustat; // CDROM 장치를 연다. if ((cd_fd = open(cd_device, O_RDONLY)) < 0) { return 1; } // fstat()를 이용해서 파일(장치)정보를 얻어온다. if (fstat(cd_fd, &lstat) != 0) { close(cd_fd); return 2; } // ustat()를 이용해서 파일시스템 정보를 요청한다. // 만약 CDROM이 mount되어 있다면 정보를 가져오고 // 0을 리턴할 것이다. // mount되어 있는 장치는 eject불가능 하므로 // errno로 EBUSY를 설정하고 리턴한다. if (ustat(lstat.st_rdev, &lustat) == 0) { errno = EBUSY; close(cd_fd); return 3; } // eject 한다. if (ioctl(cd_fd, CDROMEJECT) != 0) { close(cd_fd); return 4; } close(cd_fd); return 0; }
Copyrights © - Joinc, All Rights Reserved. Inherited From - Yundream Rebranded By - Joonphil
설명
사용방법
코드
변경사항
Recent Posts
Archive Posts
Tags