Portál AbcLinuxu, 10. května 2025 07:59

Dotaz: Jak programově odpojit CD

Jardík avatar 30.5.2010 18:09 Jardík | skóre: 40 | blog: jarda_bloguje
Jak programově odpojit CD
Přečteno: 372×
Odpovědět | Admin
Potřeboval bych v programu odpojit připojené CD. umount() mi vždy však vrátí chybu a v errno EPERM. Přitom příkaz umount normálně provést mohu a CD se odpojí. Co mám udělat pro to, abych to CD odpojil (kromě spouštění externího programu)?
Věřím v jednoho Boha.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

30.5.2010 18:35 petris_ | skóre: 12
Rozbalit Rozbalit vše Re: Jak programově odpojit CD
Odpovědět | | Sbalit | Link | Blokovat | Admin
umount z radky provest muzete, protoze ma nastaven suid bit a v /etc/fstab si precte, ze Vam to ma povolit. Pokud chcete volat primo dany syscall, musite svemu programu udelit opravneni CAP_SYS_ADMIN.
Jardík avatar 30.5.2010 19:06 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Jak programově odpojit CD
A to se dělá jak?
Věřím v jednoho Boha.
31.5.2010 11:10 Sten
Rozbalit Rozbalit vše Re: Jak programově odpojit CD
http://linux.die.net/man/2/capset
Jardík avatar 31.5.2010 11:43 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Jak programově odpojit CD
Pochybuju, že to nevyžaduje root práva a můžu zavolat ze svého procesu ... Navíc se tam píše, že to API není finální. Nějaké jiné řešení, kdy by to např. požádalo uživatele o heslo, pokud k tomu nemá oprávnění? Např. gnome normálně disky odpojuje a pokud se jedná o HDD, tak se ptá na heslo, tak něco podobného.
Věřím v jednoho Boha.
Jendа avatar 31.5.2010 12:27 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jak programově odpojit CD
Neodpojuje se posláním nějaké zprávy přes D-BUS?
31.5.2010 13:18 Sten
Rozbalit Rozbalit vše Re: Jak programově odpojit CD

Správně to má být toto: http://linux.die.net/man/3/cap_set_proc

Ano, vyžaduje to práva roota, resp. CAP_SETPCAP.

Ještě je možné odpojovat voláním HAL přes D-Bus:
dbus-send --system --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/volume_uuid_${UUID} org.freedesktop.Hal.Device.Volume.Eject array:string:

Jardík avatar 31.5.2010 13:58 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Jak programově odpojit CD
Ok, zkusím ještě najít, jak je to přes udisk, HAL je deprecated.
Věřím v jednoho Boha.
Josef Kufner avatar 31.5.2010 18:11 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Jak programově odpojit CD
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak ze svého programu spust program umount nebo eject. Vsak ono to nicemu vadit nebude a navic to bude prenositelne napric vsemi unixy.
Hello world ! Segmentation fault (core dumped)
Jardík avatar 31.5.2010 18:14 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Jak programově odpojit CD
Asi jo ...
Věřím v jednoho Boha.
Josef Kufner avatar 31.5.2010 18:16 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Jak programově odpojit CD
Vzdyt tohle je zakladni myslenka unixu ;-)
Hello world ! Segmentation fault (core dumped)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.