Programlama | Programlama Dilleri | C Programlama Dili |C++

Anasayfa Programlama Haskell Unix Sistem Çağrıları (Unix System Calls)


Unix Sistem Çağrıları (Unix System Calls)

Haskell programlama dilinde yazılmış bu fonksiyonda unix sistem çağrılarını (Unix System Calls) yapabilen bir uygulama yapılmıştır. Unix'te varolan ls fonksiyonunu,cp fonksiyonunu, cat fonksiyonunu, mv fonksiyonunu, rm fonksiyonunu, wc fonksiyonunu, cd fonksiyonunu gerçekleyen tam bir program yazılmıştır.

 Ör Komutlar:

ls

$ > ls C:

$ > cp dene.hs C:\\celal.txt

$ > cat dene.hs

$>mv C:\\celal.txt D:\\celal.txt

$>rm  D:\\dene

$>wc D:\\dene.hs

$>cd C:

Program Kodu :

  1.  
  2. import System.IO
  3. import System.Directory
  4.  
  5. unixcall =
  6.            getContents >>= \ satirlar ->
  7.            calistir (lines satirlar)
  8.           
  9. calistir (b:bs) =
  10.                   fonk ([a |a <-words b]) >>
  11.                   putStr "$>" >>
  12.                   calistir bs
  13.  
  14. fonk (l:[])
  15.             | l=="ls"   = getCurrentDirectory >>= \dir ->
  16.                dirlist dir
  17.  
  18. fonk (l:ls)
  19.              | l=="ls"    = dirlist (head ls)
  20.              | l=="cp"    = kopyala (head ls) (head (tail ls))
  21.              | l=="cat"   = icerikgoster (head ls)
  22.              | l=="mv"    = dosyagit(head ls) (head (tail ls))
  23.              | l=="rm"    = klasorsil(head ls)
  24.              | l=="wc"    = karaktersay (head ls)
  25.              | l=="cd"    = dizinsec (head ls)
  26.  
  27.  
  28.              
  29. dirlist a =
  30.            getCurrentDirectory >>= \dir  ->
  31.            getDirectoryContents a >>= \filelist ->
  32.            setCurrentDirectory a >>
  33.            dosyalariekranayazdir filelist >>
  34.            setCurrentDirectory dir >>
  35.            return ()
  36.                     
  37. dosyalariekranayazdir (l:[]) = putStrLn l
  38. dosyalariekranayazdir (l:ls) =
  39.                                putStrLn l >>
  40.                                dosyalariekranayazdir ls
  41.  
  42.  
  43. kopyala a b =
  44.              openFile a ReadMode >>= \acilacak ->
  45.              openFile b WriteMode >>= \yazilacak ->
  46.              hGetContents acilacak >>= \icerik ->
  47.              hPutStr yazilacak icerik >>
  48.              hClose acilacak >>
  49.              hClose yazilacak
  50.  
  51. icerikgoster a=
  52.                openFile a ReadMode >>= \acilacak ->
  53.                hGetContents acilacak >>= \icerik ->
  54.                putStr icerik
  55.  
  56. dosyagit a b=
  57.               openFile a ReadMode >>= \acilacak ->
  58.               openFile b WriteMode >>= \yazilacak ->
  59.               hGetContents acilacak >>= \icerik ->
  60.               hPutStr yazilacak icerik >>
  61.               removeFile a
  62.              
  63. klasorsil a= removeDirectory a
  64.  
  65. karaktersay a=
  66.                openFile a ReadMode >>= \acilacak ->
  67.                hGetContents acilacak >>= \icerik ->
  68.                putStrLn ("Karakter Sayisi: "++(show(length icerik))) >>
  69.                putStrLn ("Kelime Sayisi: "++(show(length(words icerik)))) >>
  70.                putStrLn ("Satir Sayisi: "++(show(length(lines icerik))))
  71.            
  72.               
  73.  
  74. dizinsec a=  setCurrentDirectory a
  75.  
 

Yorumlar (0)
Sadece kayıtlı kullanıcılar yorum yazabilir!