Pokaż wyniki 1 do 10 z 10

Temat: Wywyołania systemowe

  1. #1
    Avatar Michal_sh
    Michal_sh jest offline (s)aint
    Zarejestrowany
    Apr 2007
    Postów
    688

    Domyślnie C++ execlp

    Pisząc program pod window$em i dodając plik nagłówkowy #include <windows.h> mamy dostęp do windowsowych aplikacji ( ping itp)
    Czy jest możliwość zrobienia takiego czegoś pod Linuxem Np chciałbym uruchomić jakiś program załóżmy PING jaki plik nagłówkowy musiałbym dodać i jak wyglądała by składnia polecenia?
    Ostatnio edytowane przez Michal_sh : 12-31-2008 - 13:27

  2. #2
    Zarejestrowany
    Sep 2006
    Postów
    1,227

  3. #3
    Zarejestrowany
    Dec 2008
    Postów
    91

    Domyślnie

    Jeżeli chcesz sprawdzić co dane polecenie wypisało to sprawdź także funkcję popen.

  4. #4
    Avatar Michal_sh
    Michal_sh jest offline (s)aint
    Zarejestrowany
    Apr 2007
    Postów
    688

    Domyślnie

    Fragment kodu programu
    Kod:
    execlp("/bin/sh","ping", "192.168.1.1");
    Po kompilacji
    warning: missing sentinel in function call
    wszystko ok z tą instrukcją
    BTW http://letmegooglethatforyou.com/ dobre




    OK poradziłem sobie składnia powinna wyglądać następująco
    Kod:
    execlp("/bin/sh","ping", "127.0.0.1", NULL);
    jednak program zwraca
    ping: Can't open 127.0.0.1
    Ostatnio edytowane przez Mad_Dud : 12-31-2008 - 11:00

  5. #5
    Avatar Ormi
    Ormi jest offline %x-%x-%x-%n
    Zarejestrowany
    Jul 2008
    Skąd
    Za twoimi plecami
    Postów
    351

    Domyślnie

    Nie wiem jak ta funkcja execlp działa ani mi się nie chce sprawdzać, ale próbuje otworzyć plik "127.0.0.1" A działać będzie coś takiego:
    Kod:
    #include <stdio.h>
    #include <unistd.h>
    
    main() {
    
    execl("/bin/ping", "ping", "127.0.0.1", 0);
    
    }
    A man na prawdę nie gryzie

    $man execl

    EDIT: Aha, a najprostszą metodą użycia takich rzeczy jak ping jest funkcja system("a tutaj polecenie powłoki"). Np. system("ls"), system("ping 127.0.0.1"), system("echo kupa")
    Ostatnio edytowane przez Ormi : 12-30-2008 - 18:05
    Black Coders | Hacking, Kernel, Linux, Operating Systems, Programming
    I otworzyła studnię Czeluści,
    a dym się uniósł ze studni jak dym z wielkiego pieca,
    i od dymu zaćmiło się słońce i powietrze.
    A z dymu wyszła szarańcza na ziemię,
    i dano jej moc jaką mają ziemskie skorpiony.
    (...)
    I dano jej nakaz aby nie zabijała,
    lecz aby przez pięć miesięcy cierpieli katusze...

  6. #6
    Avatar Michal_sh
    Michal_sh jest offline (s)aint
    Zarejestrowany
    Apr 2007
    Postów
    688

    Domyślnie

    Ok dzięki , wiem co robiłem źle Zamiast 0 na końcu execl powinno być NULL
    A system("COSTAM") mi nie działa
    (‘system’ was not declared in this scope)

  7. #7
    Avatar Ormi
    Ormi jest offline %x-%x-%x-%n
    Zarejestrowany
    Jul 2008
    Skąd
    Za twoimi plecami
    Postów
    351

    Domyślnie

    Arghh!!!
    Kod:
    $man system
    SYNOPSIS
           #include <stdlib.h>
    
           int system(const char *command);
    Musisz użyć stdlib.h!! Mówiłem, że man nie gryzie ;D
    Black Coders | Hacking, Kernel, Linux, Operating Systems, Programming
    I otworzyła studnię Czeluści,
    a dym się uniósł ze studni jak dym z wielkiego pieca,
    i od dymu zaćmiło się słońce i powietrze.
    A z dymu wyszła szarańcza na ziemię,
    i dano jej moc jaką mają ziemskie skorpiony.
    (...)
    I dano jej nakaz aby nie zabijała,
    lecz aby przez pięć miesięcy cierpieli katusze...

  8. #8
    Avatar Michal_sh
    Michal_sh jest offline (s)aint
    Zarejestrowany
    Apr 2007
    Postów
    688

    Domyślnie

    Sorki nie wiedziałem pierwszy raz się z tym spotykam

  9. #9
    Zarejestrowany
    Sep 2006
    Postów
    1,227

    Domyślnie

    Skoro pierwszy raz, to idź na forum dla początkujących :-P

  10. #10
    Avatar Ormi
    Ormi jest offline %x-%x-%x-%n
    Zarejestrowany
    Jul 2008
    Skąd
    Za twoimi plecami
    Postów
    351

    Domyślnie

    Aha, a ja proponuję zmienić też nazwę tematu, gdyż problem tu poruszany ma niewiele wspólnego z wywołaniami systemowymi Nie umiem tego precyzyjnie zdefiniować, więc posłużę się wikipedią
    Cytat Napisał Wikipedia
    Wywołanie systemowe (ang. system call) stanowi interfejs między wykonywanym programem a (posiadającym zwykle wyższe uprawnienia) jądrem systemu operacyjnego. Funkcje systemowe wywoływane są przez specjalny, wspierany przez dany procesor mechanizm, na przykład z użyciem wyznaczonego przerwania lub instrukcji skoku dalekiego.

    Mechanizm ten pozwala na realizację zależnych od platformy sprzętowej zadań, do których proces użytkownika może nie mieć bezpośredniego dostępu. W nowoczesnych systemach operacyjnych realizacja takiego wywołania poprzedzona jest przez weryfikację uprawnień programu. Przykładami może być dostęp do systemu plików, komunikacja międzyprocesowa, uruchamianie innych programów, sterowanie urządzeniami systemowymi, obsługiwanie komunikacji sieciowej.

    Lista wywołań systemowych ściśle zależy od typu i wersji systemu operacyjnego i dlatego w większości zastosowań bezpośrednie korzystanie z nich nie jest wskazane. Zamiast tego w odwołaniach do nich pośredniczą standardowe biblioteki programistyczne.
    Więc jak widać raczej twój problem nie dotyczy wywołań systemowych, nie licząć tego, że execve należą do wywołań systemowych
    Black Coders | Hacking, Kernel, Linux, Operating Systems, Programming
    I otworzyła studnię Czeluści,
    a dym się uniósł ze studni jak dym z wielkiego pieca,
    i od dymu zaćmiło się słońce i powietrze.
    A z dymu wyszła szarańcza na ziemię,
    i dano jej moc jaką mają ziemskie skorpiony.
    (...)
    I dano jej nakaz aby nie zabijała,
    lecz aby przez pięć miesięcy cierpieli katusze...

Podobne wątki

  1. Hasło Systemowe Xp i dwóch adminów
    By alano in forum Hacking
    Odpowiedzi: 5
    Autor: 05-10-2007, 11:22

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj