Ders19: İşletim Sistemi Yönetimi
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 getirir1: /* 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üklenmesi1: /* 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