[求助] linux exec系统调用的问题

chenbingjy   2015-11-30 15:29 楼主
我在看exec系统调用,看execve函数的用法。
书上有个例子,两个程序,要分开编译。
第一个代码如下:
#include
#include
extern char **environ;
int main(int argc,char* argv[])
{
    int i;
    puts("输出执行参数:");
    for(i=0;i<=argc;i++)
        printf("参数%d是:%s\n",i,argv);
    puts("输出环境变量:");
    for(i=0;environ!=NULL;i++)
        printf("%s\n",environ);
    return 0;
}
第二个代码如下:
#include
#include
extern char **environ;
int main(int argc,char* argv[])
{
    puts("此信息可能无法输出");
    execve("beexec",argv,environ);
    puts("正常情况此信息无法输出");
    return 0;
}
分别编译以后,我在第二个文件的目录下输入命令:
./doexec test1
显示如下:
2.png
跟书上的不一样。
书上的意思是说,执行第二个程序。puts()函数向缓冲区输入了
一条信息后使用execve()系统调用使beexec替换原进程的执行映像。
我想可能我两个文件的路径不一致,可是怎么把他们的路径搞成一致呢?
难道要把两个工程的文件弄到一个文件夹下吗?
高手支招,教我如何操作?谢谢!

为江山踏坏了乌骓马,为社稷拉断了宝雕弓。

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复