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


Webmaster Genel   

Yazar: ByClxon    0 Yorum    161 Görüntüleme
  • 0 Oy - 0 Yüzde

Paylaşım Tarihi: 13.05.2016, 21:01:32 #1
ByClxon SEA !
Efsane Üye
Status: Çevrimdışı Yorum Sayısı:1,020 Konu Sayısı:444 Üyelik Tarihi:07.01.2016 Rep Puanı: 664

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:


Kod:
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 :


import System.IO
import System.Directory

unixcall =
          getContents >>= \ satirlar ->
          calistir (lines satirlar)
         
calistir (b:bs) =
                 fonk ([a |a <-words b]) >>
                 putStr "$>" >>
                 calistir bs

fonk (l:[])
           | l=="ls"   = getCurrentDirectory >>= \dir ->
              dirlist dir

fonk (l:ls)
            | l=="ls"    = dirlist (head ls)
            | l=="cp"    = kopyala (head ls) (head (tail ls))
            | l=="cat"   = icerikgoster (head ls)
            | l=="mv"    = dosyagit(head ls) (head (tail ls))
            | l=="rm"    = klasorsil(head ls)
            | l=="wc"    = karaktersay (head ls)
            | l=="cd"    = dizinsec (head ls)


            
dirlist a =
          getCurrentDirectory >>= \dir  ->
          getDirectoryContents a >>= \filelist ->
          setCurrentDirectory a >>
          dosyalariekranayazdir filelist >>
          setCurrentDirectory dir >>
          return ()
                   
dosyalariekranayazdir (l:[]) = putStrLn l
dosyalariekranayazdir (l:ls) =
                              putStrLn l >>
                              dosyalariekranayazdir ls


kopyala a b =
            openFile a ReadMode >>= \acilacak ->
            openFile b WriteMode >>= \yazilacak ->
            hGetContents acilacak >>= \icerik ->
            hPutStr yazilacak icerik >>
            hClose acilacak >>
            hClose yazilacak

icerikgoster a=
              openFile a ReadMode >>= \acilacak ->
              hGetContents acilacak >>= \icerik ->
              putStr icerik

dosyagit a b=
             openFile a ReadMode >>= \acilacak ->
             openFile b WriteMode >>= \yazilacak ->
             hGetContents acilacak >>= \icerik ->
             hPutStr yazilacak icerik >>
             removeFile a
            
klasorsil a= removeDirectory a

karaktersay a=
              openFile a ReadMode >>= \acilacak ->
              hGetContents acilacak >>= \icerik ->
              putStrLn ("Karakter Sayisi: "++(show(length icerik))) >>
              putStrLn ("Kelime Sayisi: "++(show(length(words icerik)))) >>
              putStrLn ("Satir Sayisi: "++(show(length(lines icerik))))
          
             
 dizinsec a=  setCurrentDirectory a

Kullanıcı İmzası
#fenerbahçeA.A.K.
İmage
İletişim İçin Facebook;

linkleri görmek için giriş yapmanız. Yada üye olmanız gerekir.


Öfkemiz sarsın her yanı, bozkurtlar yürüye yürüye
Dökülsün düşmanın kanı, yaşasın ırkçı TÜRKİYE!

Taşında gözü olanın yurduna MEZAR kazacağız
Hainin, soysuzun, döneğin alnına VATAN yaazcağız
Hainin, soysuzun alnına YAŞASIN TURAN yazacağız!



İmage






 

         








Aradığınızı Bulamadınız Mı ?

Konuyu görüntüleyenler:
1 Misafir

MemoryHackers