LINUX.ORG.RU

execvp()


0

0

Странную штуку обнаружил:

#include <unistd.h>
#include <string.h>
#include <string>
using namespace std;
int main(){
        string arg = "fcuk";
        string comm = "wget";
        int pid=fork();
        if (pid==0)
                { ///rewrite this bullshit
                char *argv[3];
                //argv[0] = (char *)malloc(strlen(comm.c_str()));
                //strcpy(argv[0], comm.c_str());
                argv[0] = (char *)malloc(strlen(arg.c_str()));
                strcpy(argv[0], arg.c_str());
                argv[1]=NULL;
                execvp(comm.c_str(), argv);
                return 0;
                }
        else
                {
                return pid;
                }
}

Здесь не правильно используется execvp(доку не внимательно читал). По-идеи эта прога должна запускать wget с параметром fcuk. 
Интересно то что она выводит:

[vova@mu crap]$ ./a.out
fcuk: missing URL
Usage: fcuk [OPTION]... [URL]...

Try `fcuk --help' for more options.

А если просто запустить wget, то:

[vova@mu crap]$ wget
wget: missing URL
Usage: wget [OPTION]... [URL]...

Try `wget --help' for more options.


То-есть в одном выводе wget заменяется на fcuk в другом. Как это можно обьяснить?

З.Ы. Я этот код взял из другой своей проги, так что он немного кривоват
anonymous

Re: execvp()

маны рулят

anonymous ()

Re: execvp()

> То-есть в одном выводе wget заменяется на fcuk в другом. Как это можно обьяснить?

Обычно usage() выглядит примерно так:

printf("Usage: %s ...", argv[0]);

execve ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.