我在看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
显示如下:
跟书上的不一样。
书上的意思是说,执行第二个程序。puts()函数向缓冲区输入了
一条信息后使用execve()系统调用使beexec替换原进程的执行映像。
我想可能我两个文件的路径不一致,可是怎么把他们的路径搞成一致呢?
难道要把两个工程的文件弄到一个文件夹下吗?
高手支招,教我如何操作?谢谢!
此帖出自Linux与安卓论坛
一周热门 更多>