• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z przekazaniem argumentów do nowego programu w C

Object Storage Arubacloud
0 głosów
135 wizyt
pytanie zadane 1 lutego 2018 w C i C++ przez kilof_45 Obywatel (1,060 p.)

Witam,

tworzę mini powłokę konsolową, której jednym z zadań jest otwarcie jednego z wbudowanych programów powłoki BASH, a właściwie ich primitywnych kopii. Wybór padł na stworzenie ls. No i już na starcie jest problem, bo funkcja main() dzieli mi jeden argumentów na dwa osobne, przykładowo przekazuję argument "katalog", jako łańcuch znaków "E:/Mój folder", a w programie ls, dostaje to jako "E:/Mój" i "folder", chociaż zmienne przekazuję jako tablicę.

char *katalog;
katalog = strdup (pwd);              //pwd jest zmienną typu char *[], zawiera ścieżkę do aktualnego katalogu
char *argv[] = {katalog, NULL};
execvp("./ls", argv);  

Jak to zrobić żeby main() nie dzielić mi tego łańcucha znaków, tylko żeby to było pod jednym indeksem tablicy? 

2 odpowiedzi

0 głosów
odpowiedź 1 lutego 2018 przez Secrus Nałogowiec (32,880 p.)
daj screen jak wpisujesz te parametry
komentarz 1 lutego 2018 przez j23 Mędrzec (194,920 p.)
Coś Cię minusują ostatnio :)

 

Drobna uwaga: prośby o sprecyzowanie problemu czy pytania do OP dawaj w komentarzach. W odpowiedziach staraj się dawać mniej lub bardziej konkretne rozwiązanie problemu.
komentarz 1 lutego 2018 przez kilof_45 Obywatel (1,060 p.)
Właśnie sęk w tym, że robię narazie ls dla bieżącego katalogu, więc nie potrzebuje wpisywać żadnych parametrów. Jedyne co wpisuje, to "ls", a resztę już napisałem na górze.
0 głosów
odpowiedź 1 lutego 2018 przez Patrycjerz Mędrzec (192,320 p.)
Widzę, że mało pisałeś w Bashu, jeśli zadajesz takie pytania. Parametry z białymi znakami oblekamy w cudzysłowy.
komentarz 1 lutego 2018 przez kilof_45 Obywatel (1,060 p.)

No to akurat wiem, bo nieraz trzeba było zmienić katalog na taki, który ma w nazwie białe znaki ;). Chodziło mi bardziej o to, dlaczego nowy program traktuje przekazaną tablicę, która ma już przypisane napisy do indeksów jakby tej tablicy nie było, skoro w deklaracji funkci main() mam nawet identyczą tablicę jak ta przekazywana.

 //Program ls.c

#include <stdio.h>

int main(int argc, char *argv[]) 
{
         return 0;
}

Albo inaczej, jak jeszcze można by taką tablicę przekazać do nowego programu?

komentarz 1 lutego 2018 przez Patrycjerz Mędrzec (192,320 p.)
Pokaż cały kod dotyczący wywołania execvp.

Podobne pytania

0 głosów
1 odpowiedź 224 wizyt
pytanie zadane 30 września 2018 w Java przez allenkun Początkujący (400 p.)
0 głosów
3 odpowiedzi 460 wizyt
pytanie zadane 29 grudnia 2020 w C i C++ przez Sabax Nowicjusz (160 p.)
+1 głos
2 odpowiedzi 338 wizyt
pytanie zadane 3 kwietnia 2021 w C i C++ przez Dawidziu Bywalec (2,610 p.)

92,575 zapytań

141,424 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...