《APUE》 第一章 图1-7 程序代码中execlp()部分解析

原创 2015年07月10日 11:24:06
#include "apue.h"
#include <sys/wait.h>

int main()
{
char buf[MAXLINE];
pid_t pid;
int status;

printf("%% ");
while (fgets(buf, MAXLINE, stdin) != NULL)
{
if (buf[strlen(buf) - 1] == '\n')
{
buf[strlen(buf) - 1] = 0; }

if ((pid = fork()) < 0) {
err_sys("fork error!");
}
else if (pid == 0)
{
execlp(buf, buf, (char *)0);
err_ret("can't execute: %s", buf); //如果execlp函数成功,这个好像不会执行啊
exit(127);
}
if ((pid = waitpid(pid, &status, 0)) < 0)
{
err_sys("waitpid error!");
}
printf("%% ");
}
exit(0);
}execlp()函数说明:在子进程中,调用execlp以执行从标准输入读入的命令。这就用新的程序文件替换了子进程原先执行的程序文件。execlp()会从PATH 环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个以后的参数当做该文件的argv[0]、argv[1]……,最后一个参数必须用空指针(NULL)作结束。如果用常数0来表示一个空指针,则必须将它强制转换为一个字符指针,否则将它解释为整形参数,如果一个整形数的长度与char * 的长度不同,那么exec函数的实际参数就将出错。如果函数调用成功,进程自己的执行代码就会变成加载程序的代码,execlp()后边的代码也就不会执行了.

APUE第一章笔记

1.UNIX体系结构            内核的接口被称为系统调用,公用的函数库建立在系统调用之上,应用软件既可以使用公用的函数库,也可以直接使用系统调用。            对于x86平台的L...
  • lubiao2012
  • lubiao2012
  • 2014年02月23日 22:28
  • 366

Linux execlp函数

execlp从PATH 环境变量中查找文件并执行定义:int execlp(const char * file,const char * arg,……);头文件:#include说明:execlp()...
  • 21aspnet
  • 21aspnet
  • 2012年05月15日 11:46
  • 17318

《影响力》读书笔记,第一章 影响力的武器

第一章影响力的武器 规律性盲目机械行为模式,也就是固定行为模式,基本特点是:每一次,构成模式的所有行为几乎都是按相同的方式,相同的顺序发生。一旦满足合适的触发条件,这种行为就会自动发生。   我...
  • qwertyuj
  • qwertyuj
  • 2012年10月01日 23:01
  • 1446

第一章1-7

什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。    软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划...
  • u013412535
  • u013412535
  • 2015年10月08日 22:28
  • 196

APUE 5-15 观察内存流的写入操作

apue.h/* * Our own header, to be included before all standard system headers. */ #ifndef _APUE_H #...
  • Lina_ACM
  • Lina_ACM
  • 2016年07月19日 09:43
  • 245

Linux环境编程--waitpid与fork与execlp

waitpid  waitpid(等待子进程中断或结束)  表头文件  #include  #include  定义函数 pid_t waitpid(pid_t pid,int * status,in...
  • 21aspnet
  • 21aspnet
  • 2011年09月01日 16:57
  • 5668

execlp最后一个参数必须为空

execlp中最后一个参数必须为空,第一个参数为执行的命令的文件名字,也可以通过命令来反查文件,比如是:execlp(“ls”,”ls”,”-al”,”/etc/passwd”,NULL)。 参考学...
  • chenrunhua
  • chenrunhua
  • 2012年12月17日 13:56
  • 1197

运行apue (unix 环境高级编程)第一个例子

拿到APUE第三版,大家肯定都是想验证书上的代码,用调试代码的过程来学习本书。但是Linux不像Windows,linux是一个free(自由)软件,free软件带来的问题就是运行一个小小的程序都要折...
  • ThinkHeart
  • ThinkHeart
  • 2017年04月19日 10:56
  • 402

APUE第一章

/*     未完成的:1.5 不过在下文中已经给出了解答。 */ 1.1 在系统上查证,除根目录外,目录.和..是不同的 ans:这个很容易,用vim打开.和..就可以看到区别。 1....
  • tianttt
  • tianttt
  • 2014年07月14日 12:00
  • 682

初识Linux/C语言编程,管道和重定向暨fork与execlp函数的理解

初识Linux/C语言编程,管道和重定向暨fork与execlp函数的理解Linux中C语言的编程有两个Windows环境下根本无须考虑的问题,关于管道和重定向的概念。fork函数是让程序创建一个跟自...
  • jxxfqyy
  • jxxfqyy
  • 2009年10月22日 10:25
  • 2515
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《APUE》 第一章 图1-7 程序代码中execlp()部分解析
举报原因:
原因补充:

(最多只允许输入30个字)