Shell komut yardımı

Başlatan korsbay, 25 Nisan 2009 - 01:46:10

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

korsbay

İlk mesajımda yardım istemezdim ama linux ta yeniyim :(

İşletim sistemleri dersi için bir shell yapmam gerekiyor.Algoritmayı kurdum ancak komutlarda sıkıntı çekiyorum.

while()
{
   komutu al.
   komutu parçala.
   child oluştur.
   çalıştır.
}

Aldığım komutları nasıl çalıştırabileceğim hakkında yardımcı olursanız sevinirim.

heartsmagic

Yapmak istediğin şeyi mi soruyorsun (programın kendisini) yoksa while yapısını mı soruyorsun?
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

korsbay

c kullanarak Unix için bir shell kodlamam lazım.
Yaptığımız program cd,ls,time,exit gibi temel fonksiyonları içermeli.
I/O redirection ları içermeli. < > gibi...
piped komutlarını kullanmalı. |

Öğrenmek istediğim şey bunları nasıl yapabileceğim.
Tek tek bütün komutları kodlamam mı gerekiyor?
Yoksa c kütüphanelerine komutu yolladığımda, bu işlemleri yapan fonksiyonlar var mı?

Mesela "cd /bin" gibi bir komutu c ile nasıl çalıştırabilirim?

heartsmagic

Emin olmamakla beraber:

system("komut")

şeklinde olsa gerek diyorum.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

korsbay

int main()
{
printf("asd:");
char a[50];
while(1)
{
gets(a);
printf("\n");
system(a);
}
return 0;
}

Teşekkür ederim.Böyle bir fonksiyonda denedim ve denediğim bütün komutları çalıştırıyor.
Ancak cd komutunu çalıştıramadım.Bunun için kullanabileceğim bir fonksiyon biliyor musunuz?

korsbay

Birde time komutunun çıktısı niye böyle oluyor:(

real   0m0.00s
user  0m0.00s
sys    0m0.00s

heartsmagic

İşin içine C girdiği için fazla bir şey söylemem mümkün değil ne yazık ki. cd komutu nasıl bir hata veriyor bilemiyorum ancak Google tarafında C programlama ile beraber bash diye arama yaparsan bazı örnekleri görmen mümkün olur. İngilizce haliyle daha iyi sonuç verir.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

korsbay

Bir haftadır google da bu konuyu araştırıyorum ama konuyla ilgili pek bir şey bulduğum söylenemez.Karşıma ya bash kodları yada normal c kodları çıkıyor...

Yardımın ve ilgin için çok teşekkürler...Gerisini deneyerek halletmeye çalışacağım...:(

heartsmagic

Biraz daha farklı bir yönetmse fork() kullanmakmış.
Sade bir açıklama:

Alıntı Yap

   1. I wanna write a C++ program in Linux environment which is able to run a Linux command ( e.g. ls) while running.
   2. Check out the man pages for system(3), fork(2) and exec(3).
   3. How can I do this?
   4. There's two ways you can do it, depending on how comfortable you are with C/C++ programming on Linux.

      1. Use the system() function, passing to it a string containing the command you want to run.
      eg. system("ls -l");
      2. Use fork() to create a child process, and have the child process call execve() to run the command.

      Which one you use depends also depends on whether you want your program to wait until the command executes or whether it should continue running.

http://www.123linux.com/programming-using-linux/how-can-i-run-a-linux-bash-command-in-my-c-program/

Bir örnek:
http://kengine.sourceforge.net/tutorial/g/execute-command-eng.htm
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.