LINUX -exec函数族
1、功能:
2、执行目录下的程序:
2.1例子:
执行ls -l程序
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork();
int i = 0;
if(pid < 0)
{
printf("fork 错误\n");
}
else if(pid == 0)
printf("子进程pid=%d,父进程ppid =%d\n",getpid(),getppid());
else if(pid > 0)
{
printf("这是父进程pid=%d\n",getpid());
execl("/bin/ls","ls","-l",NULL);
}
for(i = 0;i < 4;i++)
printf("i = %d\n",i);
}
运行结果:
2.2执行用户自己的程序的例子:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork();
int i = 0;
if(pid < 0)
{
printf("fork 错误\n");
}
else if(pid == 0)
printf("子进程pid=%d,父进程ppid =%d\n",getpid(),getppid());
else if(pid > 0)
{
printf("这是父进程pid=%d\n",getpid());
execl("/bin/ls","ls","-l",NULL);
}
for(i = 0;i < 4;i++)
printf("i = %d\n",i);
}
结果:
PS:在子进程中利用exec族函数去执行其它程序时,子进程以下的文本子进程不执行
3.执行PATH环境变量能够搜索到的程序
3.1执行系统自带的程
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork();
int i = 0;
if(pid < 0)
{
printf("fork 错误\n");
}
else if(pid == 0)
{
printf("子进程pid=%d,父进程ppid =%d\n",getpid(),getppid());
execlp("ps","ps","aux",NULL);
}
else if(pid > 0)
{
printf("这是父进程pid=%d\n",getpid());
}
for(i = 0;i < 4;i++)
printf("i = %d\n",i);
}
~
结果:
原文地址:https://blog.csdn.net/weixin_61921209/article/details/140682769
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!