Witam, dopiero co zaczynam przygody z językiem C. Mam następujący problem: jak zrealizować program, który wywołuje funkcję, która przyjmuje jako argument inny program? Wszystkie podpowiedzi mile widziane, dziękuję i pozdrawiam:)
Mój pomysł jest taki żeby użyć funkcji exec, ale trochę mam problem z jej składnią w tym konkretnym przypadku
Co to jest „funkcja przyjmująca jako argument inny program”? Co ta funkcja miałaby z tym programem zrobić?
Napisz co chcesz osiągnąć.
Chciałbym użyć execa, gdzie jego argumentem będzie string z nazwą programu + ew. argumentami. A funkcja to już randomowa, chodzi mi wyłącznie o to jak wciągnąć ten program do naszej funkcji i użyć go jako argument.
Nadal nie wiadomo o co ci chodzi.
Co to znaczy „użyć execa”.
Co to znaczy „wciągnąć program” i „użyć go jako argument”.
Hmm. Czy chodzi może o program uruchamiany w ten sposób uruchom.exe innyprogram.exe parametry
, co spowoduje uruchomienie innyprogram.exe parametry
?
Podobnie jak robi to windowsowe polecenie start.
Kurczę, tyle wiem co napisałem, takie dostałem polecenie wykonania takiego programu, na zajęciach ostatnio przerabialiśmy właśnie budowanie prostych funkcji i wykorzystywanie tych execów, tylko tyle:(
Czy na przykład jest możliwe takie otwarcie programu:
./mójprogram ./program2
i ten program 2 bylby argumentem dla mojego programu
wersja minimum:
system("excel.exe jakisplik.xlsx");
Jako że jesteś newbie nie sądzę, żebyś chciał robić coś bardziej zaawansowanego.
Czegoś takiego też chciałem użyć, da radę ?
execl( "prog", "prog", "p1", "p2", NULL );
tylko nie wiem jak zrobić żeby ta moja funkcja, przyjmowała te argumenty , p1 p2
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int pid = 0;
int i =0;
int status = 0;
if( (pid=fork())==0 )
{
execl( "my_prog", "my_prog", "1", "2", NULL );
}
int k1;
int k2;
if(argv[1] && argv[2])
{
k1 = atoi(argv[1]);
k2 = atoi(argv[2]);
}
printf("Parametr 1: %d \n",k1);
printf("Parametr 2: %d \n",k2);
return 0;
}
Teraz chce żeby ten main przyjął argumenty 1 i 2