社区
系统维护与使用区
帖子详情
请问在 linux 下如何使用 execl() 调用另一个多进程的程序?
xiao_potato
2002-06-29 02:55:48
如果该多进程程序能够运行,并且如何得到它的主进程的id?
...全文
1137
11
打赏
收藏
请问在 linux 下如何使用 execl() 调用另一个多进程的程序?
如果该多进程程序能够运行,并且如何得到它的主进程的id?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhangyb
2002-06-30
打赏
举报
回复
我的问题由别人提出,我怎么给分??
zhangyb
2002-06-30
打赏
举报
回复
qxp():
非常感谢!
能否解释一下execl("./rec","./rec",NULL)中
两个 ./rec 的含义
ajiefudan
2002-06-30
打赏
举报
回复
在主进程中调用getpid就可以得到主进程的pid
可以在fork之前,这样子进程也可以看到
zhangyb
2002-06-30
打赏
举报
回复
但是我在另外一个程序中这样写
if(fork()==0)
{
execl("./vid",NULL); //vid 是另一个程序
}
就可以。
zhangyb
2002-06-30
打赏
举报
回复
但是我在另外一个程序中这样写
if(fork()==0)
{
execl("./vid",NULL); //vid 是另一个程序
}
就可以。
qxp
2002-06-30
打赏
举报
回复
第一个是路径,第二个是argv[0], 所以,第二个参数必须填,
exec 根据这两个参数来找到并载入、执行程序。
给分嘛,找小土豆呀,呵呵 :P
qxp
2002-06-29
打赏
举报
回复
这个很简单,你要明白:
execl调用并不会产生一个新的pid
所以,大致的代码是这样的
child_pid=fork();
if(pid == 0)
{ //child process
execl("./rec","./rec",NULL); // your statement is wrong
//never go here
perror("execl");
exit(1);
}
// in parent process
// you can kill the process bye call kill(child_pid,SIGKILL)
xiao_potato
2002-06-29
打赏
举报
回复
我的问题是替zhangyb提的。大家帮帮他吧!
zhangyb
2002-06-29
打赏
举报
回复
程序代码如下:
if(fork()) == 0){
execl("./rec", NULL);
id = getpid();
}
rec不能执行
其中rec是我的另一个程序,如果直接运行rec, 可看到四个rec进程存在
zhangyb
2002-06-29
打赏
举报
回复
1。我要调用的程序运行后有多个进程存在,
2。运行后,我还要获得主进程的id,能够将这多个进程杀掉.
我的程序每次运行后,可以看到四个同样的进程存在,只有杀掉第一个才能终止程序。
qxp
2002-06-29
打赏
举报
回复
对不起,我不明白你的意思?
什么是多进程程序啊?主进程又指的是什么?
linux
-进程-
exec
l族函数
我们用fork函数创建新进程后,经常会在新进程中
调用
exec
函数去执行另外
一个
程序
。因为
调用
exec
函数并不创建新进程,所以前后进程的ID并没有改变。可执行文件既可以是
一个
二进制文件,也可以是任何
linux
下可执行的脚本文件。分别是:
exec
l,
exec
lp,
exec
le,
exec
v,
exec
vp,
exec
vpe。echo $PATH:显示当前PATH环境变量,该变量的值由一系列以冒号分隔的目录名组成。,表示你需要执行谁,往后的参数也就是和
exec
l的传参一样。//我的目录下是没有文件file的。
Linux
进程终止
程序
内
调用
其他可执行
程序
创建进程 僵尸进程
多进程
与信号(c++)
父进程如果处理了子进程退出的信息,内核就会释放这个数据结构,父进程如果没有处理子进程退出的信息,内核就不会释放这个数据结构,子进程的进程编号将一直被占用。1)父进程复制自己,然后,父进程和子进程分别执行不同的代码。这种用法在网络服务
程序
中很常见,父进程等待客户端的连接请求,当请求到达时,父进程
调用
fork(),让子进程处理些请求,而父进程则继续等待下
一个
连接请求。在
多进程
的服务
程序
中,如果子进程收到退出信号,子进程自行退出,如果父进程收到退出信号,则应该先向全部的子进程发送退出信号,然后自己再退出。
Linux
调用
可执行
程序
文章目录一、
exec
函数族1.参数说明2.示例
程序
2.1 测试 ls 命令2.2 测试客户端可执行
程序
(编译过的)3.
使用
exec
l 常用方法二、system函数1.函数的声明及参数2.示例
程序
在C/C++
程序
中,经常需要
调用
其它的
程序
来先成某项任务,例如其它的C/C++
程序
、操作系统命令或Shell脚本,C/C++提供了
exec
函数族和system函数来实现这个功能。 一、
exec
函数族
exec
函数族提供了
一个
在进程中启动另
一个
程序
执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用
嵌入式
Linux
-进程中常用的函数
调用
exec
l()和
exec
v()要求提供新
程序
的路径名,而
exec
lp()和
exec
vp()则允许只提供新
程序
文件名,系统会在由环境变量 PATH 所指定的目录列表中寻找相应的可执行文件,如果执行的新
程序
是
一个
Linux
命令,这将很有用;系统
调用
exec
ve()可以将新
程序
加载到某一进程的内存空间,通过
调用
exec
ve()函数将
一个
外部的可执行文件加载到进程的内存空间运行,
使用
新的
程序
替换旧的
程序
,而进程的栈、数据、以及堆数据会被新
程序
的相应部件所替换,然后从新
程序
的 main()函数开始执行。
【
Linux
】
exec
l函数详解|进程重载
🔥❤️
exec
l函数用于执行
一个
新的
程序
,为
一个
进程的0-3G用户空间进行重载。执行
一个
指定的可执行文件,来替代当前进程,也就是说,它会加载
一个
新的
程序
映像并运行它,取代当前进程。
系统维护与使用区
19,615
社区成员
74,562
社区内容
发帖
与我相关
我的任务
系统维护与使用区
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
复制链接
扫一扫
分享
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章