22 Aralık 2013 Pazar

Ders19: İşletim Sistemi Yönetimi

Ders19: İşletim Sistemi Yönetimi


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:
      system("işletim_sistemi_komutu");
Örneğin,
Windows dizininde bulunan tüm dosyaları listelemek için
      system("dir c:\\windows");
Bu fonksiyon Linux İşletim sisteminde de kullanımı aynıdır. Örneğin /root/bingul/www dizinindeki dosya ve alt dizinleri listelemek için
      system("ls -asl /root/bingul/www");
Program 19.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 19.1 : D: sürücüsünde bulunan bütün dosyaları gizli ve salt-okunur hale getirir
1:  /* D: sürücüsündeki bütün dosyaları gizli ve salt-okunur hale getirir */
2:  #include <stdlib.h>
3:  main()
4:  {
5:     system("attrib d:\\*.* +h+r");
6:  }

Program 19.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 siteminde olduğu gibi Linux işletim sisteminde de kullanımı aynıdır.
Program 19.2 : Bilgisayar açılışında DOSKEY in yüklenmesi
1:  /* autoexec.bat dosyasına 'doskey /insert' yazar */
2:  #include <stdio.h>
3:  #include <stdlib.h>
4:
5:  main()
6:  {
7:     system("echo. >> c:\\autoexec.bat");
8:     system("echo doskey /insert >> c:\\autoexec.bat");
9:     printf("DOSKEY açılışa yüklendi...\n");
10: }
DOSKEY açılışa yüklendi...

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. Genel kullanım biçimi:
          ...
          main(arguman_sayisi,arguman_vektoru)
          int  arguman_sayısı;
          char *arguman_vektoru[];
          {
             .
             .
             .
             if(arguman_sayisi < ...){
                printf("Eksik parametre !\n");
                exit(0);
             }
             if(arguman_sayisi > ...){
                 printf("Çok fazla parametre !\n");
                 exit(0);
             }
             .
             ... arguman_vectoru[0] ... /* 1. eleman program adı  */
             ... arguman_vectoru[1] ... /* 2. eleman 1. parametre */
             ... arguman_vectoru[2] ... /* 3. eleman 2. parametre */
             .
         }
Program 19.3 i dikkatle inceleyin.
Program 19.3 : komut satırından girilen iki sayının toplamını hesaplar
1:  #include <stdio.h>
2:  #include <stdlib.h>
3:
4:  main(int argsay, char *argvek[])
5:  {
6:     int toplam;
7:
8:     if(argsay < 3){
9:       printf("Eksik parametre !\n");
10:      exit(0);
11:    }
12:    if(arguman_sayisi > 3){
13:       printf("Çok fazla parametre !\n");
14:       exit(1);
15:    }
16:
17:    toplam = atoi(argvec[1])+atoi(argvec[2]);
18:    printf("Toplamları %d\n",toplam);
19:
20:  }

Program 19.3 in derlendikten sonra MS DOS ve Linux ortamında çalıştırılması şöyledir:
MS DOS                      | UNIX / Linux
----------------------------+-----------------------
c:\>topla 1 2               |$ topla 1 2
Toplamları 3                |Toplamları 3
                            |
C:\>topla 9 5 8             |$ topla 9 5 8
Çok fazla parametre !       |Çok fazla parametre !
                            |
C:\>topla 5                 |C:\>topla 5
Eksik parametre !           |Eksik parametre !
                            |
Komut satırında yazılan dosya adı dahil toplam parametre sayısı 3 tür. Bunlar:
argsay = 3

      1            2            3
    -----        -----        -----
             
    topla          58           34

      ^            ^            ^
      |            |            |
   argvek[0]    argvek[1]    argvek[2]
şeklindedir.
Aşağıda verilen iki program linux işletim sistemindeki cp ve wc komutlarının basit kaynak kodlarıdır:
  • cp komutunun kaynak kodları
  • wc komutunun kaynak kodları

Hiç yorum yok:

Yorum Gönder