17.1 İşletim Sistemi Yönetimi(system(),main() Fonksiyonları)
system() Fonksiyonu
Bu kısımda standart bir derleyicinde bulunan, stdlib.h kütüphanesindeki system() fonksiyonu anlatılacaktır. Bu fonksiyon kendisine parametre olarak gelen ifadeyi UNIX, Linux veya MS-DOS komut satırına yazar ve çalıştırır. system() fonksiyonu ile, bilgisayarın tüm dosya ve çevre birimleri, küçük program parçaları sayesinde kontrol edilebilir. Genel yazım biçimi:
1 |
system("işletim sistemi komutu"); |
Örneğin, Windows dizininde bulunan tüm dosyaları listelemek için
1 |
system("dir c:\\windows"); |
Bu fonksiyonun Linux İşletim sistemindeki kullanımı da aynıdır. Örneğin /home/bingul/web dizinindeki dosya ve alt dizinleri listelemek için
1 |
system("ls -asl /home/bingul/web"); |
Program 17.1, D: sürücüsünde bulunan tüm dosyaları gizli ve salt okunur hale getirmek için kullanılır. Son olarak, derleyicinin EXE kodu üreteceğini unutmayın. Bu EXE kodu her bilgisayarda çalışır.
Program 17.1: D: sürücüsünde bulunan bütün dosyaları gizli ve salt-okunur hale getirir
Program 17.2 proramında autoexec.bat dosyasına DOSKEYin nasıl yükleneceği gösterilmiştir. Bunun için >> yönlendirme operatörü kullanılmıştır. Bu operatör MSDOS işletim sisteminde olduğu gibi Linux işletim sisteminde de kullanımı aynıdır.
Program 17.2: Bilgisayar açılışında DOSKEY in yüklenmesi
NOT
|
main() Fonksiyonuna Paremetre Aktarımı
Fonksiyon inşasına dayanan bir C programında, ana programın kendisi, main(), de bir fonksiyondur. Ana programa parametre aktarımı, derlenmiş bir program komut satırından (işletim sistemi ortamından) ilk çalıştırılacağı zaman yapılır. Aktarılacak parametreler, programın adı yazılıp bir boşluk bırakıldıktan hemen sonra yazılır. Parametreler, komut satırından sayısal olarak girilse bile program içinde karakter topluluğu (string) olarak gelir. Bu durumda, string ifadeleri sayısal değerlere çeviren fonksiyonlar (atoi(), atol(), atof(),…) kullanılmalıdır[1]. Genel kullanım biçimi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
... main(arguman_sayısı,arguman_vektörü) int arguman_sayısı; char *arguman_vektörü[]; { . . . if(arguman_sayısı < ...){ printf("Eksik parametre !\n"); exit(0); } if(arguman_sayısı > ...){ printf("Cok fazla parametre !\n"); exit(1); } . ... arguman_vektörü[0] ... /* 1. eleman program adı */ ... arguman_vektörü[1] ... /* 2. eleman 1. parametre */ ... arguman_vektörü[2] ... /* 3. eleman 2. parametre */ . } |
Program 17.3, komut satırından girilen iki sayının toplamını hesaplamaktadır.
Program 17.3: Komut satırından girilen iki sayının toplamını hesaplar
Program 17.3 derlendikten sonra MS DOS ve/veya Linux ortamında çalıştırılması şöyledir:
Derleme:
MS DOS (Turbo C) | Linux | ||||
|
|
Çalıştırma ve çıktı:
MSDOS (Turbo C) | Linux | ||||
|
|
||||
|
|
||||
|
|
Komut satırında yazılan dosya adı dahil toplam parametre sayısı 3 tür. Bunlar:
1 2 3 4 5 6 7 8 9 10 |
argsay = 3 1 2 3 ----- ----- ----- topla 58 34 ^ ^ ^ | | | argvek[0] argvek[1] argvek[2] |
şeklindedir.
Program 17.3, komut satırından girilen iki sayının toplamını hesaplar. Bu programın daha gelişmiş hali Program 17.4’de verilmiştir. Program 17.4 çalıştırıldığında, komut satırından girilen iki sayı ve bir operatör bekler. Girilen operatöre göre beş aritmetik işlemden birinini yapıp sonucu ekranda gösterir. İnceleyiniz.
Program 17.4: Komut satırından girilen iki sayı ve bir operatör bilgisine göre 5 işlemden birini hesaplar
Derleme:
MS DOS (Turbo C) | Linux | ||||
|
|
Çalıştırma ve çıktı:
MSDOS (Turbo C) | Linux | ||
|
|||
|
|||
|
Çalıştırma ve çıktı:
MSDOS (Turbo C) | Linux | ||
|
|||
|
|||
|
Örnekler
Aşağıda verilen iki program Linux işletim sistemindeki cp ve wc komutlarının basit kaynak kodlarıdır: