问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux进程通信 中的exec问题

发布网友 发布时间:2022-04-20 18:08

我来回答

1个回答

热心网友 时间:2023-04-25 15:13

哪里写的这些...好乱阿..

先解释下基本的:

int main(argc,char * argv[])
main的参数,就是命令行参数.

比如你的可执行文件是test,你希望在程序执行时传入IP地址,那么可以这样:

./test 127.0.0.1

此时,argc =1,argv[1]是就是指向"127.0.0.1"指针(命令参数全部当作字符串来处理的)。
而 argv[0]就代表第一个参数,这里对应的就是"./test"。
argc和argv在mian里面都是可以使用的,出了main的范围就不能使用了。

再来说你提出的第一个地方,exec的问题。

exec实际上包含了一组函数,execl, execlp, execle, execv, execvp, execvpe
具体使用方法,你man execv就可以得到这些函数的使用方法。

exec函数的作用是,产生一个新进程,结束当前进程(具体执行的操作是复制当前进程的一部分数据和权限,然后根据参数启动一个新的进程)。

exec这组函数执行时候,需要提供的参数包括:一个可执行程序的路径,传递给可执行程序的参数。(这里的参数,与刚才说到的main的参数含义相同。)

说到这里应该明白了吧...就一个。

我不知道你要hello world干什么...照你意思给写了个.

第一个,就是你贴出来的代码改动一点点(我这边运行有点问题):

#include <stdio.h>
main(int argc,char* argv[])
{
int i=0
while(i<=argc)
{
printf("arguement %d : %s ",i,argv[i]);
printf("\n");
i++;
}
}

运行程序:
$gcc test.c -o test
$./test hello world
输出结果:
[ksl@myhost WGX]$ ./test hello world
Arguement 0:./test
Arguement 1:hello
Arguement 2:world
Arguement 3:(null)

然后第二个,使用exec的例子,我用execl吧..
文件名是test1.c

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

void main(int argc,char *argv[])
{
printf("This is not exec...");

execl("./test","hello","world",NULL);

//如果exec执行正常,下面的printf将不会被执行
//因为当前进程已经结束,./test将被执行
printf("exec error");
}

输出结果:
[ksl@myhost WGX]$ ./test1
Arguement 0:hello
Arguement 1:world
Arguement 2:(null)

后者并没输出"./test"....就是exec启动的程序,其命令行参数中只有参数.(我也不晓得原因...=.=||)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 LINUX命令怎么把EXEC加入后台运行 linux navicat快捷键中的exec 该怎么写 linux exec命令新产生的进程肯定是挂在init进程下... linux exec命令主要用来干什么的啊? linux下exec 函数第一个参数和第二个参数的区别 linux中fork,source和exec的区别 linux shell脚本 解释exec 关于Linux的shell的exec命令 linux中find /_name massage -exec chmod 777 {};... Linux命令exec的使用: Win10 Edge浏览器怎么重装 Win10重装Edge浏览器方法 如何将 Microsoft edge整合到windows 7安装盘 win10的microsoft edge怎么安装 Win10中Edge浏览器怎么重装 重装Edge浏览器方法 如何在Windows 7下载Microsoft Edge浏览器? 如何用管理员身份下载Microsoft+Edge 谁有下载Microsoft edge的下载地址,或程序包 Win 10我把EDge,卸载之后再次去微软官网下,点击... 怎么安装microsoft edge edge怎么安装到D盘 linux中system和exec函数的区别 手机店里大多向顾客推荐vivo和oppo,这是为什么? linux下exec函数不返回结果 linux中exec和xargs命令的区别和优劣分析 Oppo和vivo对品牌重新定位了吗? linux bash语法问题,关于find exec的奇怪语法,末... ajax请求php页面,这个页面需要执行linux命令 我用... oppo与vivo的关系 oppo和vivo到底分家了吗?我在跟一个人争。还有一... OPPO和vivo牌子的关系 OPPO和vivo一样吗 oppo和vivo是什么关系? oppo和vivo是同一家公司吗 OPPO和VIVO一样吗? 视频音乐在哪里下载? 哪里能下载视频配乐呀? 视频音乐怎么下载? 在哪里可以下载到有视频的歌曲? 请问在哪里可以下载视频歌曲 做视频剪辑一般在哪下载音乐素材?