[shell][c] pouzivanie execlp

Programovacie jazyky, rady, poradňa...
M142
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3118
Registrovaný: 22 mar 2006, 15:31

[shell][c] pouzivanie execlp

Príspevok od používateľa M142 »

chcem spravit jednoduchy program, ktory bude spustat program, ktory je zadany ako argument, napr
./myprogram ls vypise obsah priecinku, ./myprogram date zasa vypise datum..
ale totalne netusim ako na to. mam zatial nieco podobne:

Kód: Vybrať všetko

#include <unistd.h>
#include <stdio.h>

int main (int argc, char *argv[]){
    
    execlp("echo","echo", argv[1], NULL);
     	
       return 0;
}
co ale vymenit za echo aby sa ten prikaz z argumentu nevypisal ale vykonal? stojim na tom uz celkom slusnu dobu a neviem na to ani za nic prist a potrebujem to pre dalsiu pracu..
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8219
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: [shell][c] pouzivanie execlp

Príspevok od používateľa harrison314 »

S tymito vecami som sa hral na jednom predmete dobrych par mesiacov :D .
Takze ty chces aby sa ti ten prikaz iba vykonal, ale nic sa nevypisalo (umlcal by si jeho standardny vystup)? Alebo jeho vystup chces aj nacitat dajme tomu do buffera?


V kazdom pripade skus toto

Kód: Vybrať všetko

#include <unistd.h>
#include <stdio.h>

int main (int argc, char *argv[]){
    
    execlp(argv[1],argv[1], NULL);
        
       return 0;
}
M142
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3118
Registrovaný: 22 mar 2006, 15:31

Re: [shell][c] pouzivanie execlp

Príspevok od používateľa M142 »

to som uz skusal, tak to nefunguje :) a jasne, ide mi o to, aby sa ten prikaz aj vypisal na konzolu.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8219
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: [shell][c] pouzivanie execlp

Príspevok od používateľa harrison314 »

To pretoze execlp vyzaduje plnu cestu k programu, ktory spusta, execvp by to malo hladat samo.

Kód: Vybrať všetko

#include <unistd.h>
#include <stdio.h>

int main (int argc, char *argv[]){
    argv[argc]=NULL;
    argv++;
    execvp(argv[0],argv);
       return 0;
}
Tu mas o tom viac http://pubs.opengroup.org/onlinepubs/00 ... /exec.html .
Ak to ma robit daco viac odporucam forkovat.
Napísať odpoveď