Merhaba,
Kullanıcı ara biriminin ne yapacağı önemli. Belki Electron amacınıza daha uygundur. Benim Gtk tecrübem kısıtlı ve üzerinden uzun süre geçti. Ben Qt tavsiye ederim.
- Qt’un arkasında kar amacı güden bir şirket var
- Qt, C++ ile geliştiriliyor ve C++ ile çok rahat kullanılıyor
- Gtk C ile geliştiriliyor. C++ için de bir kütüphane vardı
- Qt kütüphaneleri kullanıcı ara birimi dışında bir çok işleve de sahip (mesela ağ bağlantısı)
- Qt ticari lisansa da sahip
- Qt Creator oldukça kaliteli bir IDE. Gtk’da dengi bir IDE var mı, bilmiyorum
Qt kullanacaksanız QML ile geliştirmenizi, widgets kullanmamanızı tavsiye ederim.
PyQt ile Python dilinden de Qt’a erişebilirsiniz. Ben sadece C++ ile kullandım. Python bizim ortamımıza uygun değildi. Uygulamanızı gömülü bir cihazda yada Python olmayan bir yerde çalıştırma amacınız yoksa, Python ile daha hızlı ilerleyebilirsiniz. C++ kullanırsanız uygulama üzerinde daha fazla kontrol sahibi olursunuz, uygulamayı farklı cihazlara taşıyabilirsiniz, ancak bunun da bedeli olur. Geliştirme süreniz Python’a göre büyük ihtimalle uzayacaktır.
Hangi dilde olursa olsun sistem komutu çalıştırmanın güvenlik açısından bazı sıkıntıları olacaktır. C ve C++ ile dışarıdan uygulama çalıştırırken fork-exec
yapmanız doğru olur, ancak hangi exec
'i çağıracağınızı okuyup anlamanız gerekiyor. Dikkatli olmanız gereken bir başka konu da tamponlar. Tamponların kontrolü tamamen geliştiriciye bırakılıyor. exec
öncesinde ne komutu çalıştıracağınıza, çevre değişkenlerine, çalışmakta olan (kullanıcı ara birimi) uygulamasının sahip olduğu çevre değişkenlerine, uygulamayı çalıştıran kullanıcının yetki ve kabiliyetlerine ve çalıştırılan uygulamanın standart giriş-çıkış dosya tanımlayıcılarına (standard I/O file descriptors) ne olacağına karar vermeniz gerekiyor. Bu fonksiyonların yanlış kullanımları ciddi güvenlik açıklarına sebep olur.
Bildiğim kadarıyla C yada C++'tan apt
'e erişim yok, ancak Python modülleri mevcut. Çılgınlık yapıp Python’u C yada C++'tan çalıştırabilirsiniz ve apt
'i kullanabilirsiniz. Başka bir konuda bunun yapıldığına şahit oldum. O yüzden “olmaz öyle şey” demiyorum. C ve C++'tan erişim için libapt-pkg varmış.
sudo
'yu bu şekilde kullanıcı ara birimi içerisinden çalıştıramazsınız çünkü sudo
genelde tty üzerinden girdi okumayı gerektiriyor. Bu işlem için için çeşitli tavsiyeler var, ancak benim Qt kullanarak böyle bir şey yapmışlığım yok. Şu soru ve cevaplar ilginç görünüyor. Bulabilirseniz, var olan bir kütüphaneyi yada kodu aynen kullanın. Eğer güvenlik konusunda uzmanlığınız yada kodu gözden geçirecek/deneyecek bir güvenlik uzmanına erişimiz yoksa, kendiniz geliştirmeyin. sudo
'nun kendisinde bile 10 yıllık güvenlik açığı bulundu, geçtiğimiz yıl yamandı.