linux exec系统调用的问题

2019-03-26 12:34发布

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

此帖出自Linux与安卓论坛
0条回答

一周热门 更多>