[Techtalk] wrapping unix commands

Dan dan at cellectivity.com
Fri Apr 8 18:29:48 EST 2005


> execve("pciconf", args, NULL);

This command does something that surprises a lot of people when they 
first use it. As the man page says, "execve() does not return on 
success, and the text, data, bss, and stack of the  calling  process 
are overwritten  by  that of the program loaded."

In other words, no statements after the excve() command will be 
executed, unless you fork() first.

An alternative is to use system(), which behaves more as you might 
expect (returns after the command has executed). In some cases it's more 
convenient, because its syntax is closer to shell syntax.

However, system() can easily lead to security holes. So execve() is 
probably a better choice for you.

-- 
    I'm actually hoping that [Linux] won't take more than 25 or 30%
    of the market. If Linux owned 95% of the market it would be
    ... as sick [as Windows]. There is some need for competition.
                - Linus Torvalds


More information about the Techtalk mailing list